Рефакторинг
Что это такое
Рефакторинг — это изменение структуры кода без изменения его поведения, и это процедура, а не событие: последовательность маленьких преобразований, после каждого из которых программа продолжает работать, — и так до тех пор, пока проектирование не станет проще менять. Вся дисциплина в последней части: поведение обязано остаться прежним, иначе упражнение превращается в случайную переписку с нуля, у которой вдобавок нет плана, положенного настоящей переписке.
Почему это важно
Проблемы проектирования дёшево исправить, пока код невелик, и дорого — когда от текущей формы уже зависит какая-то функция. Рефакторинг позволяет платить эту цену непрерывно, а не одним рискованным комком позже. Без него команда попадает в цикл: код становится трудно менять, изменения делают, добавляя условия снаружи, отчего менять его ещё труднее, — и в конце концов единственным оставшимся ходом оказывается переписывание с нуля. А переписывание выбрасывает накопленное в старом коде знание, тогда как рефакторинг его сохраняет.
Что в этом треке
- Безопасные шаги рефакторинга (01-cs-fundamentals/19-refactoring/01-safe-refactoring-steps) — процедура: поведение не меняется, шаги мелкие, между ними прогон тестов.
- Рефакторинги, которыми вы действительно воспользуетесь (01-cs-fundamentals/19-refactoring/02-refactorings-you-will-actually-use) — горстка преобразований, покрывающая большинство настоящих улучшений.
Предварительные требования
- Чистый код (01-cs-fundamentals/08-clean-code)
- Модульное тестирование (01-cs-fundamentals/10-unit-testing)
Что читать дальше
- Отладка (01-cs-fundamentals/11-debugging) — что делать, когда изменение, которое вы считали сохраняющим поведение, ломает тест.
- Код-ревью (01-cs-fundamentals/17-code-review) — как показать проверяющему, что рефакторинг действительно не изменил поведение.
- Архитектура программного обеспечения (01-cs-fundamentals/25-software-architecture) — та же дисциплина в масштабе модулей, когда проблема уже не в отдельных файлах.