Баннер мобильный (1) Пройти тест

Легаси-код

Глоссарий

11 декабря 2023

Поделиться

Скопировано

Содержание

    Легаси-код (от англ. legacy — наследие) — в самом широком смысле это код, который используется, помимо его автора, другим лицом. Чаще всего это происходит, когда он передается «по наследству» от одного разработчика другому. Легаси-код считается неотъемлемой частью любого процесса разработки, причем он может быть как источником проблем для разработчиков, так и единственным, что нормально работает в программном обеспечении.

    Что такое legacy-код

    Существует несколько определений легаси-кода, каждое из которых на самом деле описывает один из его аспектов:

    • был создан с использованием устаревших версий языка программирования или устаревших фреймворков;
    • не был должным образом документирован, что означает, что о нем недостаточно информации;
    • не имеет тестового покрытия, что делает его сложным для поддержки и развития, так как программист не знает, какие проблемы могут возникнуть при его изменении.

    Чтобы понять, что такое legacy в разработке, достаточно взглянуть на общую схему появления такого кода:

    • Команда разрабатывает многофункциональный и сложный продукт с большим количеством возможностей.
    • Некоторые (чаще всего используемые) функции этого продукта со временем оптимизируются разработчиками, а другие остаются в старом виде, поскольку они либо редко используются, либо хорошо работают в изначальном виде.
    • Со временем команда разработчиков, работающая над продуктом, меняется и в ней не остается людей, которые писали старый код.
    • Текущая команда не знает, почему именно так был написан старый код.
    • Эти участки кода сложны для изменения или разборки, так как остальной код уже написан иначе. И вот этот сложный для поддержки и анализа старый код и называется legacy.

    К причинам появления легаси-кода можно отнести следующие:

    • Недостаточное понимание требований разработчиками, что может привести к созданию кода, который трудно поддерживать и модифицировать.
    • Нехватку времени и ресурсов для проведения полноценной рефакторизации или переписывания кода, из-за чего разработчики используют «быстрые» решения, которые со временем превращаются в легаси-код.
    • Недостаток или отсутствие документации и комментариев в коде, которые могут затруднить новым разработчикам его понимание и поддержку в будущем. 
    • Неэффективное управление изменениями и отсутствие контроля над эволюцией кода (накопление технического долга), которые могут привести к потере его четкой структуры и качества.
    • Развитие технологий и языков программирования, приводящее к устареванию некоторых компонентов системы.

    Чтобы лучше понять, что такое легаси, нужно знать, что он возникает при работе над любым достаточно крупным продуктом и не является аномалией и признаком низкой квалификации разработчиков. В частности, в последних версиях операционной системы Windows до сих пор имеются фрагменты, написанные свыше 20 лет назад.

    Достоинства легаси-кода

    Работоспособность. Легаси-код уже проверен временем и доказал свою работоспособность. Он может быть надежным и стабильным, особенно если прошел множество тестирований и исправлений ошибок.

    Знание и понимание. Легаси-код может содержать ценную информацию о бизнес-логике и особенностях системы. Разработчики, знакомые с ним, могут иметь глубокое понимание работы системы и быть ценными ресурсами для ее поддержки и обслуживания.

    Снижение затрат. Иногда переписывание легаси-кода может быть дорогостоящим и времязатратным процессом. В таких случаях поддержка и модификация легаси-кода может быть более экономически эффективной стратегией.

    Недостатки легаси-кода

    Сложность поддержки. Легаси-код часто не имеет хорошей документации или комментариев, что делает его сложным для понимания и поддержки. Разработчики, незнакомые с ним, могут тратить много времени на разбор и изучение его структуры и особенностей.

    Ограниченные возможности. Легаси-код может быть написан на устаревших языках программирования или использовать устаревшие библиотеки. Это может ограничивать возможности расширения функциональности системы и препятствовать интеграции с новыми технологиями.

    Риск ошибок и безопасности. Легаси-код, особенно если он не поддерживался и обновлялся в течение длительного времени, может содержать уязвимости и ошибки, которые могут представлять угрозу для безопасности системы.

    Как работать с легаси-кодом

    Работа с легаси-кодом может представлять определенную сложность для разработчика, но следующие рекомендации помогут справиться с этой задачей:

    • Осознать контекст. Перед тем как начать изменения, изучите код и разберитесь в его архитектуре и структуре. Понимание текущего функционала и основных проблем поможет вам определить, какие изменения необходимо внести и какие риски могут возникнуть.
    • Создать тесты. Прежде чем вносить изменения в легаси-код, создайте набор тестов, которые позволят вам проверить его работоспособность после внесенных корректировок. Тесты помогут избежать непредвиденных ошибок и подтвердить, что изменения не повлияли на работу системы.
    • Разделить код на модули. Если легаси-код слишком сложен для изменений в целом, попробуйте разбить его на отдельные блоки или компоненты. Это позволит вам работать с более маленькими и понятными частями, упрощая процесс изменений и обеспечивая более чистую архитектуру.
    • Постепенно вносить изменения. Вместо того чтобы пытаться переписать весь легаси-код сразу, начните с маленьких изменений. Поэтапное внедрение нового кода поможет контролировать риски и проверять работоспособность системы на каждом шаге.
    • Документировать изменения. Важно документировать все внесенные в легаси-код изменения, чтобы другие разработчики могли понять, что было изменено и почему. Это также поможет вам возвращаться к изменениям в будущем и понимать их влияние на систему.
    • Обратиться за помощью. Если вы столкнулись с особыми сложностями или не можете справиться со старым кодом самостоятельно, не стесняйтесь обратиться к коллегам или сообществу разработчиков за помощью и советами. Часто опыт других людей может быть очень полезным в работе с легаси-кодом.

    Обязательно ли устранять или переписывать легаси-код

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

    • Стабильность и работоспособность. Если легаси-код надежен, стабилен и успешно выполняет свою функцию без проблем, то возможно нет необходимости в его устранении или переписывании. В таких случаях поддержка и обслуживание существующего кода может быть более разумным решением.
    • Расширение функциональности. Если требуется добавление новых функций или модификация существующих и легаси-код ограничивает возможности разработки или интеграции с новыми технологиями, то переписывание может быть целесообразным для обеспечения будущей расширяемости системы.
    • Сложность поддержки и обслуживания. Если легаси-код трудно понять, документация отсутствует или его поддержка требует значительных усилий и ресурсов, то его переписывание может быть обоснованным. Это может улучшить понимание кода, упростить его обслуживание и снизить риски возникновения ошибок.
    • Безопасность. Легаси-код может содержать уязвимости, которые представляют угрозу для безопасности системы. В таких случаях его устранение или переписывание может быть необходимым для обеспечения защиты данных и предотвращения потенциальных атак.
    • Экономические аспекты. Переписывание легаси-кода может быть дорогостоящим и времязатратным процессом. В таких случаях оценка затрат и выгод от переписывания должна быть проведена, чтобы определить, является ли это экономически целесообразным решением по сравнению с поддержкой и модификацией существующего кода.

    Таким образом, легаси-код может как быть источником проблем в разработке, так и существенно упрощать поддержку программного продукта. Решение о его устранении или рефакторинге должно быть основано на анализе текущего состояния, требованиях бизнеса, доступных ресурсах и будущих планах развития системы. Важно найти баланс между поддержкой существующего кода и необходимостью обеспечения гибкости, безопасности и эффективности разработки. 

    Поделиться

    Скопировано

    0 комментариев

    Комментарии