Щоб додати супу ще одну метафору, дизайнерські зразки - це помічник помічника Microsoft Office. "Ви, здається, робите те ж саме з цілою купою речей. Чи можу я допомогти вам у цьому, пропонуючи вам Ітератор або Відвідувач?"
Хороша написання цих шаблонів вказує, коли корисно робити щось так, як це робилося багато разів раніше, які помилки ви будете робити вперше, коли ви спробуєте це, і які поширені способи було уникнути цих помилок . Таким чином, ви читаєте шаблон дизайну (або переглядаєте його з пам'яті), а потім продовжуєте свою роботу. Те, що ви не можете зробити, отримує лише за допомогою Clippy та майстрів.
Там, де недосвідчені люди можуть помилитися і написати код, який не враховує реальність, це коли вони думають, що їх перелік моделей дизайну - це повний перелік усіх можливих підходів до вирішення проблем у програмному забезпеченні, і намагаються розробити код, пов'язуючи дизайн разом шаблони, поки не буде закінчено. Ще одна погана тактика, яка спостерігається в дикій природі, полягає в тому, щоб взувати роговий узор дизайну в ситуацію, для якої не дуже підходить, виходячи з того, що модель дизайну "найкраща практика". Ні, це може бути, а може і не бути найкращою практикою для класу проблем, який він насправді вирішує , але це, звичайно, не найкраща практика для проблем, які він не вдається вирішити, або для проблем, які він вирішує лише вводячи непотрібну складність, коли є більш просте рішення .
Звичайно, також можна, щоб хтось уникнув шаблону, виходячи з того, що YAGNI, потім зрозумів, що їм це потрібно, і прагнути до нормального рішення. Зазвичай це (але не завжди) гірше, ніж реалізація вимоги з самого початку, і тому навіть у спритному розвитку це неприємно, коли абсолютно передбачувані вимоги не виявляються рано. Я не міг бути єдиним програмістом на C ++, який дуже потішився тим, що Java спочатку відкидала загальні контейнери як непотрібні складні, а потім повертала їх назад.
Тому майже напевно помилка уникати написання ітератора в принципі, оскільки ви віддаєте перевагу уникати шаблонів дизайну.
Додавання нового поля до шару інтерфейсу користувача / бази даних / даних займає 2-3 години, де, як і в його коді, потрібно 30 хвилин.
Справді не можна з цим посперечатися: за цією метрикою його дизайн набагато кращий за інший. Чи це тому , що він уникав шаблонів дизайну, це сумнівно, але я думаю, що це більше ймовірно, тому що він розглядав правильні "реальні" питання при його розробці, і з користю для досвіду краще на своїй роботі, ніж хтось озброєний лише підручником і високі ідеали.
Тож він визнав, що будь-який шаблон, який вимагає доторкнутися до багатьох різних точок у коді, щоб додати поле, є поганою схемою для роботи, "полегшити додавання полів", і він не використовував ці шаблони. Багатошарові архітектури в цьому відношенні можуть постраждати, і неправильно використовувати дизайнерські шаблони, не оцінюючи їх недоліків.
На противагу цьому, скільки часу потрібно, щоб написати новий інтерфейс у своєму дизайні і скільки часу потрібно для багатошарової архітектури? Якщо проект закликав його постійно створювати та розгортати нові інтерфейси користувача через фіксовану модель даних, замість того, щоб постійно додавати поля, сподіваємось, він натомість створив це. Або також. Але, незважаючи на всі його переваги, сказати, що "ми робимо спритність", на жаль, не означає, що вам ніколи не доведеться робити черговий компроміс!
Вибір із меню дизайнерських моделей, безумовно, може зупинити вас на думці про найважливіші проблеми. Але розпізнавання, коли ви пишете Відвідувача, і документування або називання його "Відвідувач", щоб допомогти читачам швидко отримати його, не дуже перешкоджає чомусь. Написання "це відвідувач" замість того, щоб правильно його документувати - це жахлива помилка з тієї причини, яку дає ваш старший розробник - програмісти цього не зрозуміють. Навіть програмістам, які знають, що таке Відвідувач, потрібна більше інформації, а не просто "це відвідувач".