tgoop.com/dev_easy_notes/108
Last Update:
Меня всегда удивляло как легаси превратили в маркетинговый инструмент для вакансии. Очень часто можно увидеть фразу у нас нет легаси, весь код написан на Kotlin. Возникает вопрос, а точно ли они понимают что такое легаси? Почему если фича написана на Java то это сразу легаси, а может ли быть легаси на Kotlin? Складывается впечатление, что если мы пишем на Kotlin то это по определению код который легаси быть не может.
Представьте ситуацию, есть крутая команда разработчиков. Они придерживаются лучших практик, уделяют внимание архитектуре, чистоте кода, тестам вся фигня, но при этом пишут все на Java. Затем в индустрии все начинают переходить на Kotlin. Переходят на него по понятным причинам, он позволяет избежать многих ошибок, писать на нем приятнее и при этом все плюсы JVM сохраняются.
В этот момент весь код на Java нарекают легаси. Возникает вопрос, схерали? Да в этом коде нет фишек которые есть у Kotlin, но код по-прежнему чистый, поддерживаемый и покрыт тестами в разумных пределах. Его нарекли легаси только потому, что он не написан на другом более новом языке. Однажды наступит момент, когда на смену Kotlin придет еще более совершенный язык. Тогда весь на код на Kotlin станет легаси?
Если задуматься то какой код можно назвать легаси? Мне нравится определение Майкла Физерса: “легаси код – код который не проходит тесты“. В продукте всегда происходит куча изменений, изменения в архитектуре, подходах, требованиях. Это нормально так и должно быть. Бизнес может менять стратегию, а следовательно и требования. Если бизнес не меняется и не растет, то конкуренты просто загребут весь рынок. Кодовая база при этом должна поддерживать эти изменения, архитектура должна помогать в этом.
Код становится легаси в том случае, когда внесения изменений в него становится страшно дорогим. Если у кода, нет никаких инструментов тестирования и внятной архитектуры ты не можешь безопасно вносить изменения. Ты не уверен в том, не сломал ли ты чего. Приложение при этом может быть громадным, протестировать все будет очень дорого для команды. Появляется страх изменений и появляются выражения: “работает не трогает”.
Легаси не зависит от языка на котором писали. Если есть хорошее тестирование, код на старом языке можно понемногу переписывать на новый, и даже без переписывания безопасно вносить изменения. Отсюда также выходит другая интересная вещь. Даже новый код, написанный на новом языке, может стать легаси, если у него нет никаких тестов и выбрана архитектура которая не дает легко изменять код.
Поэтому забавно когда пытаются продать проект, написанный полностью на Kotlin с утверждением, что “У нас вообще нет легаси”. Камон ребята, пара итераций и это легаси появится. Поэтому не ведитесь на этот маркетинговый ход, задавайте кучу вопросов на собесе.
BY Dev Easy Notes
Share with your friend now:
tgoop.com/dev_easy_notes/108