Основной источник
Серия book_cube о книге Tidy First?
5 постов: вводная часть, tidyings, управление изменениями и теория (coupling/cohesion, economics).
Tidy First?: A Personal Exercise in Empirical Software Design (Чистый дизайн)
Авторы: Kent Beck
Издательство: O'Reilly Media, 2023
Объём: ~170 страниц
Книга Кента Бека о small structural changes: tidyings, separate tidying и экономике решений через coupling, cohesion и optionality.
О чем книга и зачем термин tidying
Кент Бек отделяет структурные изменения от поведенческих: сначала делаем код удобнее для следующего шага, потом меняем функциональность. Для этого он использует термин tidying как подмножество рефакторинга.
Центральная идея: дизайн не как академическая теория, а как рабочий инструмент, снижающий риск и стресс при постоянных изменениях в проде.
Оригинал книги доступен на O'Reilly Learning. Русский перевод (издательство Питер): страница книги.
Поведение системы
Что продукт делает для пользователя сегодня. Изменения видны сразу, но их цена может быть высокой при плохой структуре.
Структура системы
Насколько дёшево и безопасно вносить изменения завтра. Эффект не мгновенный, но он определяет скорость команды на длинной дистанции.
Часть I: Tidyings
Автор предлагает множество маленьких техник, которые сами по себе недорогие, но в сумме резко улучшают прозрачность и скорость последующих задач.
Читаемость
- Guard clauses и ранний возврат
- Пояснительные переменные и константы
- Порядок чтения кода и визуальная группировка
Структура
- New interface, old implementation
- Сведение declaration + initialization
- Extract helper и работа с cohesion order
Гигиена
- Удаление dead code
- Нормализация симметрий по всему коду
- Удаление избыточных комментариев
Часть II: Managing
Вторая часть книги про процесс: когда начинать уборку, как не смешивать её с фичами и как выбирать размер изменений.
- Отделяйте tidying от изменения поведения (лучше отдельный MR).
- Планируйте цепочки cleanup-изменений, но останавливайтесь до переусложнения.
- Выбирайте batch size с учётом стоимости review и риска конфликтов.
- Поддерживайте ритм: маленькая регулярная уборка лучше редкой генеральной.
- Если изменения запутались, проще откатить и собрать их заново в правильном порядке.
Часть III: Theory
Structure vs Behavior
Поведение даёт ценность сейчас, структура определяет стоимость и скорость следующих изменений.
Time Value + Optionality
Ранние доходы важнее поздних, но дизайн покупает опцион на будущие изменения.
Coupling и Cohesion
Высокий coupling делает дорогими крупные изменения, а хорошая cohesion уменьшает объём затронутого кода.
Reversible vs Irreversible
Структурные изменения чаще обратимы, продуктовые последствия поведения часто необратимы.
В книге отдельно разбирается мысль, близкая к «равенству Константайна»:cost(software) ~ coupling. Чем выше зацепление, тем дороже крупные изменения.
Практический шаблон применения
До фичи
Сделайте 1-2 tidyings, которые убирают явную боль в точке будущего изменения.
Во время фичи
Держите фокус на поведении, не расширяйте рефакторинг без явной экономической причины.
После релиза
Закройте оставшийся технический хвост небольшим tidy-MR, пока контекст в памяти.
Связанные главы
- Что такое архитектура ПО и зачем она в System Design - даёт системный контекст, в котором tidy-подход выступает как инструмент управления архитектурной стоимостью изменений.
- Clean Architecture (short summary) - показывает, как структурные принципы и границы модулей уменьшают coupling и упрощают эволюцию кода.
- A Philosophy of Software Design (short summary) - расширяет идею снижения сложности через глубокие модули и информационное сокрытие, на которых строится tidy-first мышление.
- Building Evolutionary Architectures (short summary) - добавляет уровень архитектурной эволюции и fitness functions, где небольшие безопасные изменения становятся рабочей стратегией.
- Continuous Architecture in Practice (short summary) - связывает tidy-подход с постоянным потоком решений в проде и практикой incremental architecture.
