Слово "легаси" произошло от английского legacy code.
Представим, что есть проект, в который закрался баг и тебя попросили найти его и починить. 🛠
Вроде бы всё выглядит как обычная ничем не примечательная задачка, но... есть нюансы:
• Эта программка изначально написана ещё пленными немцами, захваченными под Сталинградом.
• Комментарии к коду почему-то решили написать иероглифами 🈵🈯️🈳
• Коллега, который поддерживал проект, уволился ещё лет 5 назад... и унёс с собой сокровенные знания обо всех костылях, на которых держится проект.
• Этот код написали раньше, чем придумали слово документация.
• Тестирование в этом проекте не существует как явление.
• Код написан на языке, который уже давно похоронен на свалке истории. 🚮
И вот уже лёгкая прогулка превращается в настоящее испытание для неокрепшей психики юного падавана.
Но не отчаивайся! Если ты когда-нибудь хотел попробовать себя в роли археолога, приступай к этой задачке не раздумывая. Она с головой погрузит тебя в далёкое прошлое... ⏳🏺🕸
Работа с легаси кодом чем-то похожа на кропотливую работу археолога, с только что найденным древним артефактом. 🔍
При первом взгляде на него ты понятия не имеешь, что это за странная хрень...Но потом ты понимаешь, что в этом тоже есть свой особый шарм! Ты начинаешь изучать свою находку, снимаешь слой за слоем налёт времени.
Шаг за шагом начинаешь изучать старую забавную вещицу, пытаешься понять, почему в ней всё было сделано именно так...
Постепенно частички пазла в твоей голове начинают вставать на свои места, тайны древних со скрипом начинают тебе открываться...
В потоке ты уже перестаёшь замечать, как проходит один час за другим, и вот уже вместо непонятной хреновины с эльфийскими рунами, перед тобой лежит открытая книга!
Давай подытожим напоследок в виде плюсов/минусов и пары советов.
Минусы при работе с легаси:
• Устаревшие технологии
• Отсутствие документации
• Отсутствие тестов
• Непривычный или сложный стиль написания кода, который усложняет его модификацию
• Отсутствие возможности задать вопросы создателям кода
Плюсы:
• Разработчикам, которых нанимают для работы с легаси кодом, обычно больше платят. Ну или по крайней мере должны...
• Возможность прокачать свою "насмотренность"
• Учишься понимать и распутывать чужую логику
• Возможность встретить необычные, оригинальные "олдскульные" решения
• Видишь, какие решения приводят к проблемам, а какие - к успеху. Это позволит тебе самому не наступать на эти же грабли в будущем.
• Узнаёшь историю создания проекта, видишь, какие технологии лежат у его истоков
• Хороший способ прокачать усидчивость, концентрацию и стрессоустойчивость :)
Ну и под конец несколько советов, которые облегчат тебе работу с легаси:
• Двигайся небольшими шагами 👣. Не пытайся понять весь проект сразу. Лучше разбивай код на небольшие части и изучай их по одной, так будет легче понять, что к чему. Изменения тоже лучше вносить по чуть-чуть.
• Не стесняйся задавать вопросы своей команде. Наверняка кто-то уже разбирался в какой-нибудь части этого кода, или сталкивался с похожими проблемами. Кто-нибудь да подскажет, как тебе лучше поступить.
• Обкладывайся тестами. В идеале даже настроить автоматическое тестирование. Это позволит тебе зафиксировать текущее состояние и убедиться, что ты действительно разобрался в протестированной части кода. Позволит точно знать, что после новых исправлений ничего внезапно не отвалится где-нибудь в совершенно другой части проекта. 🤯
• Документируй свои находки. Документация или заметки помогут тебе самому не запутаться... и упростят жизнь тем, кто придёт после тебя :)
• По мере того, как ты начинаешь понимать код, пробуй улучшать его структуру. Тогда код постепенно станет более читабельным, и поддерживать его станет проще.
Главное помни, что некоторые решения специально могли быть сделаны не самым лучшим образом. Например, чтобы получить максимальную скорость в ущерб читабельности.
В общем, постарайся сделать проект хотя бы чуточку менее легасийным. :)
Вот теперь точно всё. :)
Как-то так получилось у меня описать свой археологический опыт, а уж работать с легаси кодом или нет, решать только тебе, дружище. :)
В любом случае, желаю удачи! 💪
Чтобы не потеряться, подписывайся на канал здесь или в телеграмме: t.me/blog_pro_it