Легаси-код
Существующий код, который трудно изменять из-за отсутствия тестов, плохой документации, устаревших технологий или недоступности оригинальных разработчиков.
Определение
Michael Feathers определяет легаси-код просто как "код без тестов", потому что без тестов изменения рискованны. Легаси-код часто имеет: неясную архитектуру, отсутствующую документацию, deprecated зависимости, сложные взаимозависимости и накопленные костыли. Однако легаси-код также ценен — он представляет работающую бизнес-логику, проверенную в продакшне.
Почему это важно
Большинство разработчиков тратят больше времени на поддержку легаси-кода, чем на написание нового. Понимание безопасной модификации легаси-систем — критический навык. Техники включают: добавление характеризационных тестов, паттерн strangler fig, инкрементальный рефакторинг.
Пример
15-летний PHP-монолит обрабатывает миллионы транзакций ежедневно. У него нет тестов, используются deprecated библиотеки, оригинальная команда ушла. Разработчики должны добавить тесты перед изменениями, чтобы не сломать продакшн.