Рефакторинг

Что это такое

Рефакторинг — это изменение структуры кода без изменения его поведения, и это процедура, а не событие: последовательность маленьких преобразований, после каждого из которых программа продолжает работать, — и так до тех пор, пока проектирование не станет проще менять. Вся дисциплина в последней части: поведение обязано остаться прежним, иначе упражнение превращается в случайную переписку с нуля, у которой вдобавок нет плана, положенного настоящей переписке.

Почему это важно

Проблемы проектирования дёшево исправить, пока код невелик, и дорого — когда от текущей формы уже зависит какая-то функция. Рефакторинг позволяет платить эту цену непрерывно, а не одним рискованным комком позже. Без него команда попадает в цикл: код становится трудно менять, изменения делают, добавляя условия снаружи, отчего менять его ещё труднее, — и в конце концов единственным оставшимся ходом оказывается переписывание с нуля. А переписывание выбрасывает накопленное в старом коде знание, тогда как рефакторинг его сохраняет.

Что в этом треке

  1. Безопасные шаги рефакторинга (01-cs-fundamentals/19-refactoring/01-safe-refactoring-steps) — процедура: поведение не меняется, шаги мелкие, между ними прогон тестов.
  2. Рефакторинги, которыми вы действительно воспользуетесь (01-cs-fundamentals/19-refactoring/02-refactorings-you-will-actually-use) — горстка преобразований, покрывающая большинство настоящих улучшений.

Предварительные требования

Что читать дальше

  • Отладка (01-cs-fundamentals/11-debugging) — что делать, когда изменение, которое вы считали сохраняющим поведение, ломает тест.
  • Код-ревью (01-cs-fundamentals/17-code-review) — как показать проверяющему, что рефакторинг действительно не изменил поведение.
  • Архитектура программного обеспечения (01-cs-fundamentals/25-software-architecture) — та же дисциплина в масштабе модулей, когда проблема уже не в отдельных файлах.