Pull to refresh

Comments 10

Слышал мнение, что паттерны проектирования это не «заготовки» которые нужно использовать в проекте. А просто обобщенное описание того, что в коде очень часто встречается. Чтобы люди, глядящие в этот код, могли похожие вещи называть определенным термином. То есть, вы пишите код, тот который вам нужен, а потом, постфактум понимаете, что он идеально соответствует некоторому паттерну, после чего этот участок кода называете не «эта фигня», а «фабрика» или «строитель» и всем все понятно.

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

Я только про то, что имели ввиду авторы паттернов.
А ваш подход, навязывает определенный схему работы. Ты не решаешь, задачу, а мучительно думаешь какой же паттерн сюда впихнуть, что было «стильно, модно, молодежно».
Конечно, со временем, когда уже напишешь сотню другую проектов и сможешь увидеть в них общие черты станет очевидно в чем у них сходство и различие — какому паттерну они соответствуют. Но для этого нужен бэкграунд в виде «сотню другую проектов».

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

Полностью согласен. Без бэкграунда, неумелое нагромождение паттернов, зачастую, делает код только хуже и менее читаемым
Скорее шаблоны можно сравнить с кубиками «LEGO». Сам по себе кубик не функционален, так как не может быть применен отдельно от других кубиков.
Но при этом каждый кубик предназначен для конкретной цели, может быть установлен только в правильное место, и обеспечивает «место» для следующего правильного кубика.
Как я понял (и пока я придерживаюсь этого мнения). Это именно не «кубики», а названия класса фигур.
Это круглые детали, а эти квадратные, а эти с дырочками. И собираем мы не из названий классов, а из конкретных деталей, часть из которых немного круглые, а часть немного квадратные, а в некоторых есть отверстия.
Это помогает сортировать кучу кубиков в конечное кол-во ячеек (и кстати я именно так сортирую детский лего всего в десяток ячеек). И для начала надо изучить именно конкретные реальные кубики во всем их многообразии, а только потом уже сказать, что есть круглые, а есть квадратные.

В общем, есть мнение, что идею авторов шаблонов поняли совершенно наоборот. Но я не настаиваю.
Шаблоны, это как рациональный подход (например: круглый кубик в круглое отверстие; посадка осуществляется через переднюю дверь; правая полоса для общественного транспорта), но модель и даже не ее фрагмент (за исключением структурных шаблонов, в особенности «Мост»).
Дело не в
помогает сортировать кучу кубиков
или
похожие вещи называть определенным термином
а в проверенных подходах которые в будущем не станут проблемой в растущем проекте.

Насчет правильно ли их поняли, не знаю. Думаю, что правильно. Просто прошло уже 25 лет, языки сильно изменились, а шаблоны учат как будто на дворе 94-й.
Я поддержу andi123. «Паттернов» (именно в кавычках) последнее время наплодилось чрезмерно именно потому, что практически любое решение частной проблемы называют паттерном. Однако по определению паттерн — устоявшаяся практика. Не новое решение а повсеместно используемое. Т.е. ничего нового в паттернах не было ибыть не может. Они не появляются, а кристализуются.
Sign up to leave a comment.

Articles