Перейти к основному содержимому

YAGNI, быстрый провал и техдолг в коде

Разработчику Тимлиду

Дисциплина объёма кода: не писать лишнее (YAGNI), падать рано (быстрый провал), не копить скрытый долг. В культуре кода это уже звучит как KISS/YAGNI — здесь практика и типичные антипаттерны.


YAGNI

You Aren't Gonna Need It — не реализуйте возможности «на вырост», пока нет запроса и теста.

АнтипаттернНаправление
Мёртвый код, закомментированные блокиУдалить
UML «на будущее» вместо кодаКод — источник правды
Иерархия с одним наследникомСвернуть
Интерфейс с одной реализациейУбрать лишний слой
Паттерн «потому что модно»Только под задачу
«Бизнес-коллекции»-обёрткиСтандартные структуры

YAGNI не оправдывает отсутствие рефакторинга: вы не строите фичу на год вперёд, но улучшаете то, что уже меняете (правило бойскаутов в статье 1).


Рефакторинг и фича — разные коммиты

Не совмещайте изменение поведения и перестройку структуры в одном непрозрачном PR. Ревьюер должен видеть:

  • либо «только поведение» (зелёные тесты на сценарий);
  • либо «только структура» (те же тесты, тот же вывод).

Это совпадает с практикой легаси и XP.


Преждевременная оптимизация

Кратко:

  • не кэшировать в доменном объекте «на всякий случай»;
  • не вводить абстракции «под масштаб», пока нет измерений;
  • профилировать, потом менять структуру данных (Кнут, Art of Computer Programming).

Подробнее — производительность выполнения.


Технический долг

Технический долг — отложенная стоимость сопровождения. Типичные формы в репозитории:

ДолгПочему опасен
Код, завязанный на prod-only конфигЛокально не воспроизвести
Вечные TODO/FIXME/HACKЗабытые обязательства
Отключённые warnings / не strict modeДефекты всплывают в runtime
Трекер багов вместо тестаРегрессии возвращаются

Стратегия:

  1. Воспроизвести дефект тестом.
  2. Починить минимально.
  3. Рефакторить в рамках MAPPER, если зона всё равно трогалась.

Связь с экономикой ПО — 7-13.


Feature flags и сложность

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


Для тимлида

  • Закладывать время на чистку в спринт так же, как на баги (процент или «правило бойскаутов»).
  • Метрики Sonar — повод для разговора, не KPI ради зелёного (итоги).
  • ИИ-генерация ускоряет черновик — ревью по MAPPER обязательно (5).

Дальше: Тесты и качество, Исключения, Справочник тем.


См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").