Соберите проект #
Выберите интересующую вас услугу
Меня интересует...

    Легаси-код

    Легаси-код
    4 мин.

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

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

      Дать одно единственное определение этому термину невозможно. Под ним понимают множество разных вещей и аспектов. Чаще всего, так называют код, который:

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

      Понять особенности legacy в создании IT-продуктов, можно благодаря схеме появления подобного кода. Как правило, все начинается с разработки сложного, многофункционального продукта. Наиболее часто используемые функции, разработчики со временем начинают оптимизировать. Исключение составляет функционал, который стабильно работает в изначальном виде или редко используется.

      Постепенно команда разработчиков начинает меняться. Со временем в ней не остается специалистов, которые участвовали в написании первоначального кода. Участники текущей команды не знают, почему программа была спроектирована и написана именно таким способом. В результате, некоторые участки кода крайне сложно изменить, поскольку все остальное уже давно переписано. Такой код и называют legacy.

      Причин его появления может быть множество. Среди самых распространенных выделяют:

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

      Говоря про легаси, стоит понимать, что он появляется в любых крупных проектах. Этот процесс является абсолютно нормальным и его не стоит воспринимать, как признак низкой квалификации сотрудников. Даже в таком продукте как ОС Windows, до сих пор встречаются элементы и фрагменты кода, написанные во времена Windows XP.

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

      К преимуществам legacy можно отнести множество разных аспектов. Первое с чего стоит начать – работоспособность. Если код исправно функционирует уже не первый год, значит он стабилен и надежен. Скорее всего, за это время он успел пройти через множество тестов и исправлений.

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

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

      Наравне с преимуществом у легаси-кода есть свои недостатки. Зачастую, он не имеет подробной документации, что крайне затрудняет взаимодействие с ним. Особенно это касается новых разработчиков в команде. Им приходиться тратить много времени, на изучение структуры, логики и функциональных особенностей.

      Поскольку legacy чаще всего написан с использованием устаревших технологий, это значительно ограничивает возможность добавления нового функционала. Такие продукты сложнее интегрировать с новыми системами. Приходиться придумывать «обходные пути», которые могут негативно сказаться на эффективности работы.

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

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

      Разработчики могут столкнуться с определенными трудностями при работе с легаси-кодом. Преодолеть их помогут следующие рекомендации:

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

      Иногда самостоятельно справиться с легаси-кодом не удается. В этом случае не стоит стесняться обращаться за помощью к коллегам или другим разработчикам в интернете. Чем больше советов и рекомендаций получит программист, тем выше вероятность успешного решения поставленной задачи.

      Нужно ли переписывать легаси-код

      Не существует единого мнения относительно целесообразности переписывания устаревшего кода. Все зависит от конкретной ситуации. Факторов, влияющих на итоговое решение довольно много, это и цели проекта, и его функциональные особенности, и результаты тестирования.

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

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

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

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

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

      Продолжая пользоваться сайтом, я даю согласие на использование файлов cookie.
      Принять и закрыть