Какие есть рецепты по использованию паттернов?

Всем привет,

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

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

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

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

Поэтому, какие ваши рецепты по использованию паттернов, когда вы их используете и почему?
  • Вопрос задан
  • 421 просмотр
Решения вопроса 1
Adamos
@Adamos
Такой рецепт: используйте паттерны, когда вам кажется, что вы можете их использовать, и не бойтесь выкинуть неудачный код только потому, что там красиво использованы паттерны.
Постепенно придете к пониманию, когда их нужно применять и как.
Просто по книжкам этого понимания не получишь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
Я давно занимаюсь разработкой ПО

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

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


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

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

Пишите код, который решает задачи. По возможности, масштабиремый, слабосвязный и тп.
Главная забота - решение поставленной задачи

А про паттерны можно поговорить на конференция
Ответ написан
AleksDesker
@AleksDesker
Единственный способ не использовать паттерны, это не писать код. Паттерн это общие механизмы решения задач, встречающихся в программировании, без привязки к синтаксису языка. Если кто-то работает со сложными проектами и при этом говорит что он не использует паттерны - это значит лишь, что он не понимает что такое паттерн или просто не знает названия паттернов, которые он использует. Изучать их я бы рекомендовал в несколько подходов - сначала просто почитать что-то популярное для общего развития, надеясь, что нечто отложится в подсознании. Второй шаг стоит сделать после пары лет работы со сложными проектами и\или фреймворками - читаете, пытаясь понять какие паттерны вы используете сами, какие паттерны используются в вашем любимом фреймворке и т.п., изучаете все их нюансы и разновидности, приучаете себя \ свою команду использовать названия паттернов, вместо пространных описаний где это возможно. Только после познания дзена в первых двух шагах стоит переходить к третьему - изучение незнакомых, непонятных паттернов, при этом вы пытаетесь понять в каком из прошлых проектов этот паттерн мог бы быть применен и какие преимущества он дает по сравнению с решением которое было там. Знание и понимание паттернов позволяет сделать систему настолько простой насколько это возможно, если у вас попытка применения паттернов приводит к появлению лишних сущностей - скорее всего вы просто поторопились с шагом 3.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы