DRY / KISS / YAGNI

DRY — Don’t Repeat Yourself

Не повторяйся

Смысл

Любая логика, правило или данные должны быть описаны ровно один раз. Если одно и то же существует в нескольких местах — при изменении придётся обновлять все копии, и одна обязательно будет забыта.

Индикаторы нарушения

  • Одинаковые или почти одинаковые блоки кода встречаются в разных местах
  • Исправление бага требует правок в двух и более файлах
  • Бизнес-правило описано «словами» в одном файле и «кодом» в другом

KISS — Keep It Simple, Stupid

Не усложняй

Смысл

Код должен быть настолько простым, насколько позволяет задача. Сложность — враг читаемости, тестируемости и поддержки. Если задача решается прямолинейно — решай прямолинейно, не вводи абстракции «на вырост».

Индикаторы нарушения

  • Коллега не может понять функцию за 30 секунд
  • Добавление простой фичи требует разбираться в трёх слоях абстракции
  • В коде есть «хитрые» решения там, где хватило бы простого if: вложенные тернарники, битовые операции, однострочный regex вместо читаемого кода

YAGNI — You Aren’t Gonna Need It

Тебе это не понадобится

Смысл

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

Индикаторы нарушения

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

Шпаргалка по DRY / KISS / YAGNI

ПринципВопрос для проверки
DRYИзменение бизнес-правила затрагивает только одно место?
KISSЗадача решена настолько просто, насколько позволяет задача?
YAGNIЭтот код нужен прямо сейчас, а не «на будущее»?