Любые предложения для ускоренного курса по шаблонам проектирования? - PullRequest
20 голосов
/ 08 мая 2009

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

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

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

Я, вероятно, проведу три-четыре сессии по часу каждая. Ребята, есть ли у вас какие-либо предложения по поводу того, что можно касаться / делать?

Ответы [ 8 ]

22 голосов
/ 08 мая 2009

Head First Design Patterns было бы отличным местом для начала. Он охватывает основные шаблоны проектирования.

Рефакторинг для паттернов также может представлять интерес.

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

16 голосов
/ 23 июня 2009

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

  1. Почему мы здесь? (Где была определена необходимость в этом курсе?)
  2. Чему я могу научиться?
  3. Кто должен пройти этот курс? (Каковы предполагаемые студенты, предпосылки и т. Д.?)
  4. Когда я смогу применить полученные знания?
  5. Ожидания от вас (участие, домашняя работа, тесты, минимальные занятия для посещения и т. Д.)

Для шаблонов проектирования можно ожидать несколько визуальных инструментов или « пособия по работе ».

Я бы придерживался структуры, аналогичной Элементам многоразового объектно-ориентированного программного обеспечения :

  1. UML - Обзор диаграмм классов
  2. ООП - Абстракция, Инкапсуляция, Полиморфизм, Наследование
  3. сцепление и сцепление
  4. Что такое шаблон проектирования? - Название шаблона, проблема, решение, последствия
  5. Почему шаблоны проектирования так трудно выучить?
  6. Зачем использовать шаблоны проектирования?
  7. Как выбрать шаблон дизайна?
  8. Как использовать шаблон проектирования?
  9. Покройте различные GoF шаблоны проектирования примерами - покажите примеры кода перед применением шаблона проектирования и его внешний вид, как Винс Хьюстон делает в своих примерах .
  10. Заключение

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

Head First Design Patterns также является отличным эталоном.

7 голосов
/ 08 мая 2009

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

Выберите шаблоны, которые а) просты и б) наиболее вероятны для использования в вашем коде. Синглтоны просты в освоении (так как они не включают предметы / предметы). Еще один интересный образец - наблюдатель.

7 голосов
/ 08 мая 2009

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

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

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

5 голосов
/ 08 мая 2009

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

Возможным подходом было бы посмотреть на какой-то страшный код и пойти по пути «Как мы могли бы улучшить это?

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

4 голосов
/ 08 мая 2009

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

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

Другая проблема с шаблонами, и проблема, с которой вы столкнетесь, заключается в том, что они не существуют. По крайней мере, они существуют еще меньше, чем «программное обеспечение». Шаблоны - это идеи и концепции. Это не исполняемый код. Runnable код может реализовать шаблон, но обратного не существует. Вы не можете просто ввести «singleton» в свой код, и внезапно синглтон существует. Нет языка, в котором добавление атрибута «посетитель» внезапно делает все возможное для реализации шаблона посетителя. Существуют лучшие практики и примеры шаблонов на разных языках, но их нельзя использовать в библиотеке и просто вызывать.

Итак, что вы действительно хотите сделать, так это научить некоторым лучшим практикам, в которых ядро ​​этих практик включает распознавание и использование шаблонов. Быть наблюдательным - очень трудный навык для обучения (для всех форм наблюдения).

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

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

2 голосов
/ 09 января 2014

Вот учебник от Nettuts +: Руководство для начинающих по разработке шаблонов

Очень легко понять. Идеально подходит для начинающих дизайнерских моделей.

Этот урок ясно объясняет:

  • почему важны шаблоны проектирования
  • когда и почему их следует использовать
  • предоставляет примеры в PHP для каждого шаблона

В учебном пособии объясняются следующие шаблоны проектирования:

  • Шаблон стратегии
  • Адаптер Pattern
  • Шаблон фабричного метода
  • Декоратор Выкройка
  • Шаблон синглтона
2 голосов
/ 08 мая 2009

Посмотрите на этом сайте: http://www.dofactory.com/Patterns/Patterns.aspx Он фокусируется на многих типах творческих, структурных и поведенческих паттернов и дает примеры со структурным, реальным и оптимизированным .net кодом. Надеюсь, это поможет

...