Як ви кажете, події є чудовим інструментом для зменшення зв’язку між класами; тому, хоча це може включати написання додаткового коду на деяких мовах без вбудованої підтримки подій, це зменшує складність великої картини.
Події, мабуть, є одним із найважливіших інструментів ОО (За словами Алана Кей - Об'єкти спілкуються, надсилаючи та отримуючи повідомлення ). Якщо ви використовуєте мову, яка має вбудовану підтримку подій, або розглядає функції як першокласних громадян, то використання їх не є розумом.
Навіть у мовах без вбудованої підтримки кількість шаблонів для щось подібне до шаблону Observer досить мінімальне. Можливо, ви зможете десь знайти гідну загальну бібліотеку подій, яку ви можете використовувати у всіх своїх програмах, щоб мінімізувати котельну табличку. (Загальний агрегатор подій або посередник подій корисний майже в будь-якому застосуванні).
Чи варто в невеликому додатку? Я б точно сказав, що так .
- Збереження класів, з'єднаних один з одним, забезпечує чистоту графіка залежності вашого класу.
- Класи без будь-яких конкретних залежностей можна перевірити ізольовано, не враховуючи інших класів тестів.
- Класи без конкретних залежностей вимагають меншої кількості опробованих тестів для повного висвітлення.
Якщо ви думаєте: "О, але це дійсно лише дуже маленьке додаток, це насправді не так важливо" , подумайте:
- Малі програми іноді в кінцевому підсумку поєднуються з більшими додатками.
- Невеликі програми, ймовірно, включають принаймні деяку логіку або компоненти, які згодом можуть знадобитися повторно використовувати в інших програмах.
- Вимоги до невеликих додатків можуть змінюватися, що спонукає до необхідності рефакторації, що простіше, коли існуючий код роз’єднується.
- Додаткові функції можуть бути додані пізніше, що спонукає до необхідності розширення існуючого коду, що також набагато простіше, коли існуючий код уже роз'єднаний.
- Захватний код, як правило, не потребує більше часу, ніж щільно зв'язаний код; але щільно пов'язаний код займає рефактор і тестування набагато більше часу, ніж слабко пов'язаний код.
В цілому, розмір програми не повинен бути вирішальним фактором, чи слід тримати заняття вільно поєднаними; Принципи SOLID не тільки для великих програм, вони застосовні до програмного забезпечення та кодових баз у будь-якому масштабі.
Насправді, заощаджений час в одиниці тестування ваших слабко зв'язаних класів в ізоляції повинен протирівноважувати будь-який додатковий витрачений час на розв'язку цих класів.