Являются ли шаблоны проектирования тем, что вы изобретаете по ходу дела
Установлены ли шаблоны проектирования или каждый отдельный достаточно опытный разработчик программного обеспечения распознает и сокращает свой код для разработки новых шаблонов. Эффективно создавая собственные "дизайнерские" шаблоны.
Редактировать - Спасибо за ответы. В действительности я просто рефакторинг и / или сокращение кода, где проблема должна была быть сначала сравнена с существующими шаблонами проектирования, прежде чем код был написан. Если совпадение было найдено, то я должен был использовать его, иначе я просто рефакторинг кода (что не так уж плохо и, как правило, не приводит к появлению каких-либо новых полезных "шаблонов".)
8 ответов
На самом деле это не вопрос или вопрос.
Шаблоны проектирования - это общие решения часто встречающихся проблем.
Уже существует множество существующих шаблонов проектирования, каждый из которых подходит для разных задач (или разных контекстов), но канон шаблонов проектирования не закрыт. Есть, конечно, больше шаблонов, которые будут созданы и / или найдены.
Важно помнить, что для того, чтобы решение действительно было шаблоном, оно должно быть достаточно общим, чтобы его можно было повторно использовать, и оно должно применяться к повторяющейся проблеме.
Я думаю, что большинство программистов со временем обнаруживают множество одинаковых шаблонов независимо друг от друга. Настоящая цель каталога шаблонов проектирования заключается в том, чтобы мы все могли раз и навсегда договориться о том, что такое конкретный шаблон и что делает, например, шаблон фасада, а затем поговорить об этом на более высоком уровне абстракции.
Если вы прочтете литературу по шаблонам проектирования, вы увидите, что это общий термин, охватывающий, по крайней мере, следующие виды знаний:
Решения общих проблем
Полезные методы программирования, которые должен знать каждый программист, т. Е. Которые должны использоваться
Обходные пути для потери в обычно используемых языках (оригинальная книга "Банды четырех" содержала много обходных путей для потери в C++ по сравнению с, скажем, Smalltalk)
Другим важным аспектом шаблонов проектирования является то, что они дают программистам общий словарный запас для обсуждения этих вещей. Таким образом, чтобы быть образцом проектирования, нужно что-то делить среди сообщества и давать согласованное имя. Чтобы ответить на ваш вопрос, вы можете создать новый шаблон проектирования, но сначала нужно создать что-то новое, а затем заставить сообщество согласиться с тем, что оно того стоит (и как его назвать).
Конечно, новые проблемы станут общими, будут изобретены новые полезные методы программирования, а новые потери создадут потребность в новых обходных путях. Но это случится не очень часто, и придумывать новые решения - тонна работы. Книга "Банда четырех" была почти полностью кодификацией существующей практики - основным новым вкладом книги был общий словарный запас. Это достойный вклад, но разочаровал тех из нас, кто слышал ажиотаж и надеялся на нечто большее, чем старое вино в новых бутылках.
Если вы хотите создавать новые шаблоны дизайна, оставьте проторенные пути. Например, шаблоны - это старые новости почти везде в объектно-ориентированном мире. (Хотя, вероятно, все еще существуют возможности для шаблонов, связанных с мультиметодной диспетчеризацией или языками, основанными на прототипах.) В отличие от этого, функциональные программисты все еще ждут, пока кто-нибудь определит и назовет большинство распространенных решений и передовых методов. Если вы великий мыслитель и писатель, вы можете оказать существенное влияние на эту область.
Это не "шаблон", пока вы не (1) нуждались в нем несколько раз; (2) может описать это способом, который не зависит от конкретной проблемной области.
Тем не менее, если бы у меня был свой путь, я бы объявил мораторий на новые шаблоны или имел бы Официальный репозиторий языков шаблонов, где он не станет "шаблоном", пока он не будет задокументирован, проверен и не показан как дублирующий. существующий образец.
В основном, когда люди говорят о "создании шаблона", они действительно имеют в виду, что нашли фрагмент кода, который хотят использовать повторно.
Конечно, есть установленные, узнаваемые образцы, как это хорошо изложено в книге "Образцы четырех банд". Существуют также шаблоны, такие как CAB и SCSF, которые публикуются такими командами, как команда Microsoft Patterns and Practices. Означает ли это, что каждый шаблон покрыт? Конечно, нет. Разработчики и команды часто придумывают свои собственные шаблоны, которые соответствуют их потребностям и которые они используют во всем проекте.
Поэтому мы не хотели бы изобретать велосипед - используйте шаблоны, которые уже существуют, - но не чувствуете, что вы ограничены только тем, что делают другие.
Нет никаких причин, по которым вы не можете задокументировать свои собственные шаблоны и анти-шаблоны как способ поделиться тем, что вы узнали, с другими; однако маловероятно, что каждый достаточно опытный разработчик программного обеспечения действительно обнаружит то, что еще не было обнаружено и задокументировано в другом месте. Прежде чем публиковать такой шаблон, убедитесь, что другой шаблон еще не охватывает этот случай, чтобы избежать смущения позже.
Одним из основных применений шаблонов проектирования является средство связи дизайна с другими программистами. Если вы создаете свои собственные, хорошо, только вы будете знать о них, и это не так полезно для общения.
Обычно разработчики создают свои собственные шаблоны проектирования, соотнося их с опубликованными шаблонами, давая нам новые идеи и идеи и улучшая нашу способность общаться.
Шаблоны проектирования программного обеспечения в целом применимы к повторяющимся проблемам и не зависят от проекта. Решения, которые вы найдете для своей собственной проблемной области, могут рассматриваться как шаблоны, если они достаточно универсальны и могут использоваться повторно для использования в аналогичных проектах с аналогичными проблемами.
Хранилище шаблонов постоянно растет, так как для решения проблем разработки программного обеспечения требуется все больше и больше хорошо продуманных решений.
Вы можете и можете, если вы обнаружите, что работаете в большом проекте с множеством экстремальных возможностей абстракции.
Но в целом шаблоны проектирования создаются людьми, которые посвящают время изучению разработки программного обеспечения в целом, из множества собственных и других проектов.