Статьи

Принципы проектирования

В одном из прошлых постов мы рассматривали качество кода в контексте использования линтеров и руководств. Но что, если я скажу вам, что дело ими не ограничивается? Помимо жестко декларированных правил по косметике, существуют и более обширные понятия. Сегодня мы рассмотрим принципы проектирования приложений SOLID, DRY и KISS. Уверен, многим из вас встречались эти аббревиатуры ранее.

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

Рассмотрим:

SOLID — эта аббревиатура объединяет пять принципов объектно-ориентированного программирования и дизайна. Все они направлены на то, чтобы привести код к слабой связанности и сильной связности.

  • Single Responsibility — принцип единственной ответственности. Никогда не должно быть больше 1-ой причины изменить модуль.
  • Open-Closed — принцип открытости/закрытости. Модули должны быть открыты для расширения, но закрыты для изменения.
  • Liskov Substitution — принцип подстановки Барбары Лисков. Объекты в программе могут быть заменены их наследниками без изменения свойств программы.
  • Interface Segregation — принцип разделения интерфейса. Клиенты не должны реализовывать методы, которые не будут использованы.
  • Dependency Inversion — принцип инверсии зависимостей. Зависимости внутри системы строятся на уровне абстракций.

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

Характеристика «сильная связность» означает, что все классы и методы сгруппированы, если имеют близкую функциональность.

DRY (Don't Repeat Yourself) — избегайте копирования кода в разные места. В противном случае дальнейшая поддержка будет трудной. Причина в том, что вам придется изменять дублированный код в разных местах.

KISS (Keep It Short and Simple) — Код не должен вызывать затруднений у других разработчиков при модификации или исправлении ошибок.

  • Ваши методы должны быть небольшими (30−50 строк).
  • Каждый метод должен решать только одну проблему.
  • Если в проекте присутствует много условий, убедитесь, что вы разбили их на мелкие блоки кода.
  • Keep It Simple, Stupid.

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