System Design Space
Граф знанийНастройки

Обновлено: 24 марта 2026 г. в 12:33

Tidy First? (Чистый дизайн) (short summary)

hard

Главная мысль этой книги в том, что беспорядок в коде редко побеждается одним героическим рефакторингом. Намного чаще система оздоравливается через маленькие структурные шаги, сделанные ровно там, где скоро понадобится менять поведение.

С практической точки зрения здесь особенно полезно разделение на tidying и продуктовую доработку. Из книги удобно брать отдельную уборку структуры, идею structure vs behavior, разговор про coupling и cohesion и экономику маленьких шагов, которые снижают стоимость следующих задач и уменьшают риск регрессий.

Для разговора о техдолге и поддерживаемости это один из самых спокойных и зрелых материалов. По нему легко объяснять, почему иногда сначала стоит расчистить точку изменения, как выбирать разумный размер таких шагов и где полезная уборка превращается в лишний перфекционизм.

Практическая польза главы

Малые улучшения

Показывает, как небольшие структурные шаги регулярно снижают стоимость будущих изменений.

Separate tidying

Учит отделять функциональные изменения от уборки дизайна, чтобы уменьшить риск регрессий.

Экономика решения

Помогает выбирать, когда рефакторинг оправдан, а когда лучше отложить ради скорости поставки.

Interview pragmatism

Дает практичный ответ на вопросы про техдолг и поддерживаемость в реальных командах.

Основной источник

Серия book_cube о книге Tidy First?

5 постов: вводная часть, tidyings, управление изменениями и теория (coupling/cohesion, economics).

Открыть пост 1/5

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, пока контекст в памяти.

Связанные главы

Где найти книгу

Чтобы отмечать прохождение, включи трекинг в Настройки