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

StackOverflow https://stackoverflow.com/questions/92225

  •  01-07-2019
  •  | 
  •  

Вопрос

Когда дело доходит до использования шаблонов дизайна, я предполагаю, что существует три типа магазинов.Те, кто не узнал бы шаблон, если бы он бросился им в глаза, обычно предпочитают подход Ctrl-C / Ctrl-V к повторному использованию кода.Те, кто тратит часы в день на поиск своего устаревшего кода в надежде реализовать еще один замечательный шаблон, обычно тратят на рефакторинг кода простых программ больше времени, чем когда-либо было бы потрачено за сто лет обслуживания.И, наконец, те, кто идет средним путем, используя шаблоны, когда они имеют смысл, и кодируя все, что приходит на ум первым, для минимально доступного кода.

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

Спасибо.

Это было полезно?

Решение

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

Я бы порекомендовал:

Оффлайн (мои любимые):

Оффлайн (популярный):

  • Шаблоны проектирования GoF
  • Рефакторинг Фаулера:Улучшение дизайна существующего кода

Другие советы

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

Моим первым и лучшим знакомством с шаблонами проектирования было Портлендский репозиторий шаблонов.

Использование "шаблона" в высокой степени зависит от

  1. используемый язык
  2. цели, которых человек хотел бы достичь.

Шаблон проектирования может быть назван переоцененным в таких языках, как C ++, Java и тому подобных.Они скрывают негибкость, возникающую при всевозможных проблемах с набором текста.Вот ссылка на то, какой шаблон "выживает" в менее строгих языках:http://norvig.com/design-patterns/

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

Большое влияние оказывает также философия, лежащая в основе используемых инструментов.Просто сравните, скажем, среднестатистические программы на PHP или Visual Basic и решения на Smalltalk, Common Lisp, Haskell и тому подобном.

Большое влияние оказывают и синтаксические элементы.Вы увидите массу похожих циклов, скажем, в C, C ++ (итераторы), но если вы заглянете в языки, которые поддерживают функции более высокого порядка, вы найдете всего несколько циклов.

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

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

С уважением Friedrich

Все постоянно используют шаблоны.Они просто могут этого не знать.Даже такая простая вещь, как "перебор списка", является шаблоном.

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

Итак, допустим, например, вы заметили, что то, что вы делаете, отлично подходит для Observer.Вы говорите своему коллеге: "Эй, это будет действительно легко сделать, если мы сделаем этот объект Наблюдателем, а этот объект - его субъектом".

Либо ваш коллега сразу поймет - это сэкономит вам время, - либо вы сами его просветите, и Далее как только вы упомянете Observer, они сразу все поймут.

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

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

Я думаю, что лучший веб-ресурс, содержащий информацию о шаблонах и рефакторинге - http://sourcemaking.com

Я большой поклонник этой серии и прочитал много их книг, поэтому я бы порекомендовал Шаблоны проектирования в первую очередь.Вы можете прочитать это онлайн через O'Reilly's Книжная полка для Сафари, но к печатной копии прилагается и отличный плакат с рисунками.

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

В качестве отступления http://www.developer.com публикует несколько статей в месяц, касающихся шаблонов проектирования и их применения.Удачи вам!

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

Refactoring: Improving the Design of Existing Code
(источник: 2020ok.com)

Множество примеров того, как реализовать разумное использование шаблонов.

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

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

Шаблоны проектирования забавны тем, что вы знаете, где использовать шаблон, только тогда, когда полностью понимаете применимый шаблон.Такие вещи, как Стратегия, Наблюдатель, Итератор, которые вы можете, после небольшой практики, использовать, не слишком задумываясь.Если вы работаете на C #, вы постоянно используете итератор (IEnumerable ...), не думая о нем как о шаблоне.

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

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

Я бы сам воспользовался книгой "Шаблоны дизайна банды четырех"

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

Головой Вперед :шаблон проектирования

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top