Как преподавать дизайн-шаблоны команде

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

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

8 ответов


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

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

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


Просмотр кода.

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


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

значит для команды, я бы сделал следующее:

1). Дизайн и код обзоры. Обзоры не должны проводиться только старшими людьми. Попросите юниоров также прочитать код и комментарий. В идеале они тоже учатся.

2). Дизайн wokrshops бросить проблемы вокруг и придумать альтернативные решения.

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


  1. взять хорошо известны.

  2. определите шаблон, который может решить проблема наиболее эффективно. И решить проблему с шаблоном, а также реализовать решение и показать им работу.

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


Не заставляйте их читать книги, это не сработает.

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

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


получите пару копий "Head First Design Patterns" и попросите людей прочитать его. Это интересный способ узнать о паттернах.

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

Я бы рекомендовал проводить один час brownbag обед один или два раза в месяц. Расскажите о концепции шаблона и покажите некоторые программы образцы.

каждая лекция я говорю о Золотой Молот-узнайте, как использовать каждый шаблон и запереть их в вашем наборе инструментов, пока они не понадобятся!

моя любимая техника-это то, что я называю "театр шаблон". Каждый из моих студентов исследует шаблон и пишет 2-3-страничный сценарий, который использует шаблон в реальном мире. Например, я представляю театр о поездке Пола Ревира, чтобы описать наблюдателя. (Роберт Ньюман видит англичан и зажигает лампы; Пол Ревир видит лампы. и начинает скакать и кричать; некоторые горожане слышат его и прячутся; некоторые горожане слышат его и хватают свое оружие - дискретные пары стимул/реакция) ничего в театрах не упоминают о программировании; они все о том, чтобы получить концепции, прежде чем я начну программную часть лекции.


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

поскольку вы не упомянули источник, я предположу, что вы говорите о книге GOF, и если да, я также предполагаю, что вы работаете на статически типизированном языке, таком как как C++, Java, C# и т. д.. Если нет, то многие шаблоны могут даже не относиться к вашей проблемной области и, вероятно, будут отвлекать ваши усилия по адаптации команды. Например, Visitor (double dispatch) не используется в динамически связанных языках, Scala имеет Синглтон и т. д..


проповедь не работает. Подавать пример.

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

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

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