Veltos.Tech

Разработка

Легаси-код

Также называют: legacy код, унаследованный код, устаревший код

Определение

Легаси-код — работающий код, который дорого менять: он написан на устаревшем стеке, не покрыт тестами или потерял авторов, поэтому любая правка требует восстанавливать логику по исходникам и грозит поломкой в непредсказуемом месте.

Важно отделить легаси от «старого». Код десятилетней давности с тестами, документацией и поддерживаемыми зависимостями легаси не является — его спокойно правят. И наоборот, проект, написанный полтора года назад без тестов, командой, которая уже разошлась, на форке фреймворка без обновлений — классическое легаси. Определяющий признак один: стоимость безопасного изменения. Если, чтобы поправить одну кнопку, нужно неделю разбираться и потом две недели ловить регресс, перед вами легаси независимо от даты первого коммита.

В российских условиях у легаси есть дополнительный слой. Часть систем завязана на продукты, которые ушли с рынка или перестали обновляться: пропали лицензии, закрылся доступ к обновлениям безопасности, отвалились платёжные и аналитические SDK. Такой код перестаёт быть просто неудобным и становится риском — и эксплуатационным, и регуляторным, если система обрабатывает персональные данные или относится к значимым объектам критической инфраструктуры. Здесь решение о модернизации принимается не по эстетике, а по требованиям.

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

Смежные термины

Услуги по теме

Почитать подробнее

Нужна помощь с этим на практике?

Мы не только объясняем термины, но и делаем это руками. Опишите задачу — разберём и пришлём смету по этапам.