Ответ
Legacy код появляется из-за устаревших решений, которые когда-то были актуальны, но со временем перестали соответствовать современным стандартам. Основные причины:
- Быстрые дедлайны — когда нет времени на рефакторинг, код пишут «как работает».
- Смена технологий — старый код остается, потому что его дорого переписывать.
- Отсутствие документации — сложно понять логику, проще оставить как есть.
- Уход разработчиков — новые члены команды боятся трогать непонятный код.
Пример:
// Legacy: jQuery вместо современного React/Vue
$('#button').click(function() {
alert('Clicked!');
});
// Современный аналог:
document.getElementById('button').addEventListener('click', () => {
console.log('Clicked!');
});
Профилактика: рефакторинг, код-ревью, документация и тесты.
Ответ 18+ 🔞
Ну вот, сидишь ты такой, пишешь код, всё пучком. А через год открываешь — а там, блядь, лес дремучий, и в нём какой-то legacy-леший орёт «Ууу, епта! Кто тут свежий?».
Откуда он, этот legacy, сука, берётся? Да всё просто, как три копейки.
Первое — дедлайны, ёпта. Начальник орёт «Надо вчера!». Ну и пишешь ты не «красиво и правильно», а «лишь бы работало, блядь». Накостылял, сдал, забыл. А этот костыль потом живёт своей жизнью, обрастает мхом и прочей хуйнёй, и все его боятся трогать. Подозрение ебать чувствую, что где-то там внутри спит гоблин, который проснётся, если тронуть.
Второе — технологии меняются, как погода. Вчера был в моде jQuery, все на нём писали, а сегодня это уже как лапти digital-эпохи. А переписать всю эту махину — это ж овердохуища работы, денег и нервов. Проще сделать вид, что его нет, и строить новую хоромину рядом со старой, покосившейся избушкой.
Третье — документации ноль ебать. Открываешь файл, а там вместо комментариев — загадочные строки, типа // TODO: разобраться, почему тут не падает. И кто это писал? А хуй его знает! Человек-невидимка, уволился пять лет назад. Лезть в эту логику — всё равно что играть в сапёра с завязанными глазами.
Четвёртое — кадры текут, как вода. Пришёл новый разработчик, глянул на это старьё, и у него волнение ебать. «А что это? А зачем это? А если я трону, оно не развалится?». И не трогает. И так по кругу.
Вот, смотри, классический пример, прямо как в музее:
// Legacy: jQuery вместо современного React/Vue
$('#button').click(function() {
alert('Clicked!');
});
// Современный аналог:
document.getElementById('button').addEventListener('click', () => {
console.log('Clicked!');
});
Видишь разницу? Сверху — как будто письмо из 2010 года, написанное кривым почерком. Снизу — уже более-менее человеческий язык.
Что делать-то, спрашиваешь? Не плодить этого зверя! Рефакторить по чуть-чуть, когда есть время. Писать тесты, чтобы не бояться, что всё ебнется. Документировать, хотя бы для самого себя через полгода. И на код-ревью не филонить, а тыкать пальцем в каждую сомнительную хрень. А то получится — «ой, работает же, зачем трогать?». А потом, через годы, сидит новая команда и материт тебя на чём свет стоит, разгребая твоё «работающее» наследие. Пиздец, да.