Візерунки складні
Усі дизайнерські зразки слід використовувати обережно. На мою думку, вам слід скористатися шаблонами, коли є поважна причина зробити це, а не реалізувати шаблон відразу. Загальна проблема використання шаблонів полягає в тому, що вони додають складності. Надмірне використання шаблонів робить певну програму чи систему громіздкою для подальшого розвитку та підтримки.
Здебільшого є просте рішення, і вам не потрібно буде застосовувати якийсь конкретний шаблон. Хорошим правилом є використання шаблону, коли фрагменти коду, як правило, замінюються або потрібно часто змінювати, і бути готовим прийняти застереження складного коду при використанні шаблону.
Пам'ятайте, що ваша мета повинна бути простотою і використовувати шаблон, якщо ви бачите практичну потребу в підтримці змін у вашому коді.
Принципи щодо моделей
Використовувати шаблони може здатися суперечливим, якщо вони, очевидно, можуть призвести до надмірних та складних рішень. Однак програмісту набагато цікавіше читати про техніку дизайну та принципи, які лежать в основі більшості зразків. Насправді одна з моїх улюблених книг про «дизайнерські зразки» наголошує на цьому , повторюючи, які принципи застосовні до цієї моделі. Вони досить прості, щоб бути корисними, ніж візерунки з точки зору актуальності. Деякі принципи є загальними, щоб охопити більше об'єктно-орієнтованого програмування (наприклад, OOP), наприклад Принцип заміни Ліскова , якщо ви можете створювати модулі свого коду.
Існує безліч принципів дизайну, але ті, що описані в першій главі книги GoF , досить корисні для початку.
- Програма на "інтерфейс", а не на "реалізацію". (Банда з чотирьох 1995: 18)
- Віддати перевагу композиції об'єкта над успадкуванням класу. (Банда з чотирьох 1995: 20)
Дозвольте тим зануритися на вас на деякий час. Слід зазначити, що коли був написаний GoF, інтерфейс означає все, що є абстракцією (що також означає суперкласи), не плутати з інтерфейсом як типом на Java або C #. Другий принцип походить від спостережуваного надмірного використання спадщини, яке, на жаль, є і сьогодні поширеним .
Звідти ви можете ознайомитися з принципами SOLID, про які був відомий Роберт Сесіль Мартін (ака. Дядько Боб) . Скотт Хензельман опитав дядька Боба в подкасті про наступні принципи :
- S Ingle Відповідальність Принцип
- O Закритий принцип
- L Іськів принцип заміщення
- Я Принцип поділу інтерфейсу
- D ependency Принцип інверсії
Ці принципи - це гарний початок для читання та обговорення з однолітками. Ви можете виявити, що принципи переплітаються між собою та з іншими процесами, такими як розділення проблем та введення залежності . Виконуючи TDD деякий час, ви також можете виявити, що ці принципи природно реалізуються на практиці, оскільки вам потрібно певною мірою їх дотримуватися, щоб створити ізольовані та повторювані одиничні тести.