Источники критики шаблонов дизайна - PullRequest
17 голосов
/ 21 октября 2010

Я читал страницу шаблонов проектирования в Википедии, в частности, раздел "Критика".

Не могли бы вы указать мне некоторые статьи или книги о недостатках шаблонов проектирования?

Ответы [ 6 ]

29 голосов
/ 21 октября 2010

Большинство критических замечаний в отношении шаблонов проектирования, с которыми я сталкивался, связано с отвращением к структурированию и маркировке того, что они считают просто хорошей объектно-ориентированной практикой. Большинство шаблонов сводятся к программированию интерфейсов и других ТВЕРДЫХ принципов . Такое ощущение, что когда мы обучаем шаблонам, мы заставляем разработчиков, особенно начинающих разработчиков, пытаться втиснуть все проблемы в набор шаблонов, который они изучили, что может создать более тупые и громоздкие проблемы, чем если бы они использовали более «простой» подход .

Я склонен согласиться с мнением о том, что, как только вы начинаете изучать шаблоны, вы склонны злоупотреблять ими, однако, как правило, вы очень быстро выходите из этой стадии и после этого начинаете гораздо более продуктивную и профессиональную карьеру в области программного обеспечения.

В качестве бонуса, это небольшая критика Джеффа Этвуда и некоторые критические идеи Марка Домина

5 голосов
/ 31 июля 2016

Сам Алан Кей очень критично относится к шаблонам, потому что он не считает, что программное обеспечение должно так хвалить. Вот интервью 2012 года доктора Доббса с Кей .

"Самая ужасная вещь в программировании - выбрать одну из 10 самых катастрофических вещей в программировании - есть очень популярное движениеоснованный на шаблонных языках. Когда Кристофер Александер впервые сделал это в архитектуре, он рассматривал 2000 лет способов, которыми люди чувствовали себя комфортно. Так что на самом деле в этом было что-то, потому что он имел дело с геномом, который не изменил этогоЯ думаю, он получил несколько сотен ценных шаблонов из этого. Но ошибка в попытках сделать это в вычислительной технике заключается в предположении, что мы вообще знаем что-либо о программировании. Поэтому извлечение шаблонов из современных практик программирования облагораживает их таким образом, что онине заслуживают. Это на самом деле дает им больше кеш. "

4 голосов
/ 21 октября 2010

Одна большая критика в отношении шаблонов проектирования связана с тем, насколько «типичными» являются некоторые шаблоны проектирования.Например, реализация шаблона стратегии представляется более актуальной (и сложной) в языках, в которых отсутствуют лямбда-функции / первоклассные функции (сравните Java с Ruby или даже с «функциональным» подходом C #, здесь ).

Но я думаю, что этот аргумент не отрицает тот факт, что шаблоны проектирования существуют, и что они являются очень хорошим, более независимым от языка способом понимания и описание архитектуры программного обеспечения.Это остается в силе, даже если некоторые шаблоны проектирования имеют более простые реализации в определенных языках или непосредственно поддерживаются ими.

Конечно, я также согласен с тем, что многие шаблоны проектирования предприятий не будутвписывается в чисто функциональный язык.Но я также считаю, что в функциональном мире есть свой набор шаблонов проектирования (например, Monad ).

3 голосов
/ 03 октября 2012

Шаблоны проектирования обычно представлены в виде набора трюков на определенном языке программирования, обычно Java или C ++. Обычно не объясняется, когда и почему необходимо использовать шаблон, а когда лучше его не использовать. Обычно не объясняется, что произойдет на совершенно другом языке программирования.

Таким образом, создается впечатление, что: 1) шаблоны дизайна приходят с неба, изобретенные гениями, 2) книгу GoF необходимо запомнить, 3) шаблоны необходимо применять всегда и во все большей степени в любой ситуации.

На мой взгляд, шаблоны проектирования сильно зависят от языка (LISP имеет совершенно другой набор «шаблонов проектирования», чем Java) и специфичны для конкретной проблемы (в зависимости от проекта вы используете или не используете шаблон, даже если это «теоретически» применимо к этому месту в вашем коде). Книга GoF является полезным дополнением к руководству по языку Java, но не набором вечных принципов «программирования в целом».

2 голосов
/ 22 октября 2010

Шаблоны дизайна были раскручены много лет десять назад; мне кажется, что большая часть критики касается чрезмерной архитектуры приложений и применения всех шаблонов, которые вы можете придумать, где можете. Эти жаркие споры довольно скучны, когда вы убираете из себя фактор разглагольствования - да, слишком много всего плохого, и для неопытного программиста с молотком все выглядит как гвоздь.

Время от времени кто-то обнаруживает, что что-то, что он делал все время, имеет имя и комментарий, который не заслуживает иметь имя (упускает из виду, что шаблоны проектирования связаны с именованием иногда очевидных вещей, так что Вы можете говорить о них).

Кроме того, вы в основном остаетесь с тем фактом, что в некоторых языках есть несколько встроенных шаблонов, а в других нет, и в академических дискуссиях о том, как со временем некоторые шаблоны становятся функциями языка программирования.

Я не видел много веской критики, связанной с шаблонами проектирования, кроме этого. Они определенно существуют, иногда они полезны, вам не нужно знать их все, когда кто-то будит вас в 3 часа ночи, и это все. :)

0 голосов
/ 04 августа 2014

Я уверен, что шаблоны проектирования помогают структурировать учебные курсы по методам программирования, но я не считаю полезным, чтобы они стали языком общения в индустрии программного обеспечения. Они могут быть контрпродуктивными как способ передачи дизайна, потому что они вынуждают дизайн соответствовать установленным шаблонам, они позволяют описать дизайн слишком небрежно и заставляют любого, кто пытается понять дизайн, читать книгу о шаблонах дизайна.

...