Что должно быть на первом месте - шаблон дизайна или код? - PullRequest
12 голосов
/ 21 мая 2009

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

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

Мне также интересно, есть ли шаблоны проектирования, которые не определены GoF, но могут быть столь же ценными? Если да, то какие есть полезные ресурсы для информирования себя об этом?

Ответы [ 8 ]

18 голосов
/ 21 мая 2009

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

6 голосов
/ 21 мая 2009

Если шаблон явно не выпадает из спецификации, я не обязательно буду пытаться выбрать что-то из GoF и решить проблему, пока она не будет соответствовать шаблону.

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

3 голосов
/ 21 мая 2009
  1. Выясните варианты использования.
  2. Подумайте о дизайне, глядя на существующий шаблон дизайна.
  3. Начало реализации.

Я считаю, что главная цель здесь - не изобретать велосипед.

PS. После того, как вы пройдете шаг 2 в течение нескольких раз и привыкнете к нему, вы сможете интегрировать этот шаг в шаг 3.

2 голосов
/ 21 мая 2009

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

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

Я также не боюсь записывать и перестраивать части программы. Есть цитата, которая мне очень нравится от Скотта Адамса: «Творчество позволяет себе делать ошибки; искусство знает, какие из них оставить». Иногда правильный ответ не очевиден, пока вы не попробуете его неправильно.

1 голос
/ 26 мая 2009

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

Откомандирован! Некоторые из худших спагетти, которые я видел, - это OO C ++ с множеством шаблонов. Fluxbox едва терпимый; Синергия (v2) варить, жарить и запекать мою лапшу: (

И один из самых красивых кодов, которые я видел, это OO C, где OO было двумя интерфейсами плюс 4 и 20 реализаций соответственно.

1 голос
/ 22 мая 2009

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

0 голосов
/ 21 мая 2009

Хороший совет уже здесь. Чтобы ответить на вопрос о полезных шаблонах, кроме книги GoF. Есть, вы должны проверить Лармана Применение UML и Шаблоны, где он описывает шаблоны GRASP.

0 голосов
/ 21 мая 2009

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

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