1 & 2
Я думаю, что неправильный подход к тому, что они просто слепо выбирают любимый шаблон или сначала код, а затем рефакторинг для известного шаблона. Когда вы видите проблему, вы должны признать сходство с другими проблемами, которые могут быть решены с использованием известных шаблонов.
Шаблоны не поваренная книга для успеха; Это эмпирическое правило. Чтение о случаях в книге о шаблонах может помочь вам распознать проблемы, избавив вас от одной или двух ошибок.
3: Какие шаблоны преобладают, очень сильно зависит от области. Шаблоны состояний, прокси-серверы и фасады очень распространены при выполнении приложений, которые много общаются с другими системами. Приложения с графическим интерфейсом имеют различные требования и т. Д.
В моей отрасли (банковское дело): я вижу много следующих шаблонов GOF: Factory Method, Singleton, Adapter и Facade. Образцы поведения более или менее убиты преобладающими 14 слоями антипаттернов, которые были модернизированы 10 лет назад.
4: при рефакторинге - если шаблон поможет вам, используйте это. Не существует класса шаблонов, которые лучше подходят для рефакторинга.
5: Я думаю, что основной показатель для конкретного шаблона больше связан с проблемой и его сходством с другими проблемами, которые были решены с помощью определенного шаблона. Да, если код пахнет, это означает, что может потребоваться перезапись, и проблема должна быть проанализирована снова. Хотя некоторые проблемы являются сложными и не могут быть уменьшены, большинство может и шаблон может помочь немного решить проблему.
Тем не менее. Вследствие того, что сложные проблемы требуют сложных решений, толстые люди склонны писать сложный код; Что за это. Например. Паттерны состояний (которые мне нравятся) могут усложнять вещи до невообразимых уровней, если они чрезмерно используются.
6: Мне кажется, что мои коллеги любят меня, поэтому я, вероятно, ничего не переусердствую. Я сам довольно раздражен чрезмерным использованием фабрики и фабричных методов в коде, который вряд ли изменится или будет существовать в разных реализациях одновременно - и если он в конечном итоге будет изменен, он все равно потребует переписывания. Это просто пустая трата времени, усложняющая код и задерживающая поиск ошибок.