Стоит ли использовать паттерны проектирования?

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

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

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

Позднее этот опыт был структурирован и обобщён для задач родственных между собой. Так и появились паттерны проектирования [1, 2].

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

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

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

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

Паттерн проектирования – это всего лишь обобщённый способ решения определённых задач. Не более. Опираясь в своей разработке на паттерны это необходимо ясно понимать.

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

Также стоит проявить внимательность при реализации того или иного паттерна в соответствии с описанием.

Не всегда «классическая» реализация, которая приведена в литературе, подходит для данной ситуации и нередко приходится использовать различные вырожденные случаи паттернов.

В целом, несмотря на своё характерное название (паттерн (pattern) переводится с английского языка, как шаблон) использование паттернов проектирование, скорее творческая задача нежели шаблонная.

Использовать паттерны безусловно нужно. За долгие годы они многократно доказали свою эффективность. Но, в любом случае, применение того или иного паттерна должно быть обоснованным и адекватным. Иначе это будет реализация «паттернов ради паттернов», которая абсолютно ничем не оправдана и не несёт в себе совершенно никакой пользы.

Литература
  1. Alexander et al. Pattern Language;
  2. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приёмы объектно-ориентированного проектирования. Паттерны проектирования.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *