Почему появляется legacy в проекте

Ответ

Legacy код появляется из-за устаревших решений, которые когда-то были актуальны, но со временем перестали соответствовать современным стандартам. Основные причины:

  1. Быстрые дедлайны — когда нет времени на рефакторинг, код пишут «как работает».
  2. Смена технологий — старый код остается, потому что его дорого переписывать.
  3. Отсутствие документации — сложно понять логику, проще оставить как есть.
  4. Уход разработчиков — новые члены команды боятся трогать непонятный код.

Пример:

// 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 года, написанное кривым почерком. Снизу — уже более-менее человеческий язык.

Что делать-то, спрашиваешь? Не плодить этого зверя! Рефакторить по чуть-чуть, когда есть время. Писать тесты, чтобы не бояться, что всё ебнется. Документировать, хотя бы для самого себя через полгода. И на код-ревью не филонить, а тыкать пальцем в каждую сомнительную хрень. А то получится — «ой, работает же, зачем трогать?». А потом, через годы, сидит новая команда и материт тебя на чём свет стоит, разгребая твоё «работающее» наследие. Пиздец, да.