Подтвердить что ты не робот

Насколько важны шаблоны проектирования?

Насколько важны шаблоны проектирования?

Я думаю, что более раннее поколение программистов так сильно не использовало шаблоны проектирования (люди, которые закончили в 80-х и до середины 90-х годов). Может ли недавний выпускник узнать об этом в целом и использовать его намного больше?

Если вы заинтересованы, я также сделал сюрприз, и вы можете посмотреть его здесь:

http://www.surveymonkey.com/s.aspx?sm=kJOdGX0RPx5FGrfPVm_2bmIw_3d_3d

Обновление: вот исходные результаты опроса:

http://img192.imageshack.us/img192/7107/surveyresults.png

4b9b3361

Ответ 1

Мы использовали шаблоны проектирования в 80-х годах, мы просто не знали, что они были шаблонами дизайна.

Ответ 2

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

Если я скажу: "Мы должны реализовать это, используя одноэлементный шаблон", у нас есть общая точка отсчета, чтобы начать обсуждать, является ли это хорошей идеей, если мне не нужно сначала реализовать решение, чтобы вы знали, что я имею в виду.

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

Довольно важно. Программное обеспечение может быть создано без них, но это, безусловно, намного сложнее.

Ответ 3

Они не абсолютно необходимы, но хорошо определенно перевешивает плохое.

Хорошее:

  • Чтение кода:. Они помогают вам писать более понятный код с лучшими именами для того, что вы пытаетесь выполнить.
    • Поддерживаемость кода:. Позволяет упростить ваш код, поскольку он более понятен.
    • Коммуникация: Они помогают вам конструировать цели проекта среди программистов.
    • Намерение: Они показывают намерение вашего кода мгновенно кому-то, изучающему код.
    • Повторное использование кода:. Они помогают определить общие решения общих проблем.
    • Меньше кода: Они позволяют писать меньше кода, потому что больше вашего кода может получить общую функциональность из общих базовых классов.
    • Протестированные и звуковые решения: Большинство шаблонов проектирования тестируются, проверены и звучат.

Плохо:

  • Дополнительные уровни косвенности: Они обеспечивают дополнительный уровень косвенности и, следовательно, делают код более сложным.
    • Знать, когда их использовать: Их часто злоупотребляют и используют в тех случаях, когда их не должно быть. Для простой задачи может не понадобиться дополнительная работа по решению шаблона проектирования.
    • Различные интерпретации: Люди иногда имеют несколько разные интерпретации шаблонов проектирования. Пример MVC, как видно из django vs. MVC, как видно из Ruby on Rails.
    • Синглтон: Нужно ли говорить больше?

Ответ 4

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

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

Ответ 5

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

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

Повествовательная история - это книга "Core Java EE Patterns". В нем перечисляется множество материалов, в которых рассматриваются "лучшие практики" для EJB 1.0 и 2.0, которые теперь считаются анти-шаблонами. Спецификация EJB 3.0 избавляет от многих из них. Spring убивает остальных.

У шаблонов был свой день на солнце, как UML. Но солнце падает на обоих. Я не думаю, что кто-то спас мир или избавился от шумихи.

Ответ 6

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

В разработке программного обеспечения шаблон проектирования является общим многоразовым решением общей проблемы в разработке программного обеспечения.

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

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

Ответ 7

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

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

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

Сказав это: я бы лучше поговорил о моделях с кем-то, чем вообще не имел общего языка. Таким образом, они важны, если нет лучшего варианта. Если я могу объяснить себя более формальными способами (например, алгебрами), я перестаю заботиться о языках шаблонов. Конечно, некоторые из них утверждают, что я просто изобретаю свои собственные языки шаблонов, -)

Ответ 8

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

Ответ 9

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

До появления шаблонов проектирования было хорошо спроектированное программное обеспечение, в котором было много шаблонов, которые можно было бы повторно использовать во многих ситуациях. Например, книга Кернигана и Ричи на C содержит пример калькулятора, реализованного с использованием yacc и lex, и стек, таблицу символов, передачу указателя функции (т.е. в основном динамическую привязку) и содержащую большое количество шаблонов для размера книги.

Возможно, вы узнаете сотни более полезных шаблонов дизайна, изучая, например, Microsoft.NET framework, библиотеки классов Java и т.д., Чем путем чтения книги по шаблонам проектирования.

Действительно, хорошее программное обеспечение имеет дизайн. И если дизайн хорош, его можно, вероятно, повторно использовать. Voila - шаблон дизайна.

Ответ 10

Я бы сказал очень

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

  • Сделайте код более удобочитаемым
  • Простота обслуживания
  • Сделайте его более гибким.
  • И этот список продолжается...

Но иногда они могут сделать точную противоположность некоторым из преимуществ, которые он снова знает, когда и когда...

Вы когда-нибудь пытались вытащить ленту с молотком для кадрирования? Вы можете любить вас, создавая молот, но он будет вызывать всевозможные проблемы, если вы попытаетесь использовать его таким образом...

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

Ответ 11

Я бы сказал, что они определенно важны.

Среди типичных причин (общий словарь, а не заново изобретать колесо) они являются отправной точкой для изучения хорошего дизайна программного обеспечения. Большинство шаблонов проектирования начинаются программистами с хорошим пониманием принципов OO, применяющих то, что они знают для решения проблемы, и замечают, что другие люди придумывают одно и то же решение. Если вы думаете о шаблонах дизайна как кулинарной книге для решения текущей проблемы, на которой вы застряли, они не очень полезны, и именно здесь вы видите, что "шаблонный шаблонный молот" выходит и усложняет дизайн.

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

Ответ 12

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

Ответ 13

Шаблоны программного обеспечения важны независимо от того, знаете ли вы, что используете их или нет... по определению.

Шаблон проектирования - это просто обобщенное, многократно используемое решение часто встречающейся проблемы.

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

Ответ 14

Начните с Принципов перед рассмотрением шаблонов, потому что это всеобъемлющие принципы дизайна, которые информируют и мотивируют появление шаблонов.

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

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

Хорошее место для начала с Принципами дизайна - это смотреть принципы дяди Боба Мартина SOLID, о них приятно, когда они погружаются в том, что вы чувствуете, что уже знаете их (что заставляет вас чувствовать себя умнее) и

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

Ответ 15

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

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

Люди, естественно, придумают решения, которые будут вписываться в шаблон разработки самостоятельно, но шаблоны проектирования помогут определить терминологию и стандартные идеи, которые могут быть полезны.

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

Ответ 16

прокомментированные шаблоны проектирования полезны, если вы пытаетесь внести свой вклад в проекты с открытым исходным кодом... достаточно сказано!