Принцип единственного знания


Что + Как функции

Связка двух аспектов функции: «что» + «как» является воплощением знания как достичь что. Это могут быть очень маленькие и простые вещи:

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

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

  1. вредит гибкости проекта, не позволяя точечно перестраивать и надстраивать функциональность (например, организовать unit-тестирование),
  2. заставляет повторять реализацию этих же целей в других местах, что нарушает принцип единственной реализации.

Что дальше

Паттерн Input — Do — Output