YAGNI, быстрый провал и техдолг в коде
Структуры в коде — Структуры данных; persistence — ORM.
Дисциплина объёма кода: не писать лишнее (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 |
| Трекер багов вместо теста | Регрессии возвращаются |
Стратегия:
- Воспроизвести дефект тестом.
- Починить минимально.
- Рефакторить в рамках MAPPER, если зона всё равно трогалась.
Связь с экономикой ПО — 7-13.
Feature flags и сложность
Переключатели функций удобны для релиза, но размножают ветвления. Удаляйте флаги после стабилизации; иначе цикломатическая сложность и когнитивная нагрузка растут годами.
Для тимлида
- Закладывать время на чистку в спринт так же, как на баги (процент или "правило бойскаутов").
- Метрики Sonar — повод для разговора, не KPI ради зелёного (итоги).
- ИИ-генерация ускоряет черновик — ревью по MAPPER обязательно (MAPPER — модель кода и предметная область).
Дальше: Тесты и качество, Исключения, Справочник тем.