Легаси что это значит

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

Однажды, Симба, всё это будет твоим

Иногда программисты на вопрос, почему программа работает именно так, отвечают, что это «легаси» и исправить ничего нельзя. Разберёмся, что это значит, насколько это мешает разработке и что делают с легаси-кодом.

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

С английского legacy переводится как «наследие». Легаси-код — это код, который перешёл «по наследству» от предыдущих разработчиков. Чаще всего это происходит так:

👉 Проще говоря, легаси — это код, про который говорят: «Это ещё Михалыч писал 8 лет назад для синхронизации с сервером, он работает, мы его не трогаем, потому что иначе всё сломается». При этом Михалыча в компании давно нет, документации тоже нет, и проще этот код не трогать совсем.

Так как легаси — это старый код, то обычно на него завязаны многие важные вещи в программе. Получается замкнутый круг: отказаться от легаси нельзя, потому что без него всё сломается, но и поддерживать его в рабочем состоянии тоже сложно, потому что никто не хочет разбираться в старом коде.

Откуда берётся легаси

Причин появления легаси может быть несколько:

Легаси — это не какое-то преступление, а часть жизни любой живой ИТ-компании. Рано или поздно у любого продукта появится легаси. И чем крупнее проект, тем больше его будет. Например, в исходном коде Windows 10 до сих пор остаются фрагменты кода, написанные ещё 20 лет назад для Windows 3.1.

Легаси — это плохо?

Легаси — это просто старый код, который нужно поддерживать наравне с новым. Если он работает — отлично, пусть живёт. Другое дело, что команде, например, было бы удобнее, чтобы код был написан не на старом фреймворке, а на новом, который знают все.

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

Что значит «поддерживать старый код»?

Например, в старом коде для запроса к серверу идёт сначала адрес, а потом номер запроса. Спустя 10 лет требования сервера изменились, поэтому сначала должен идти запрос, а потом уже адрес. Значит, нужно изменить порядок полей в коде.

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

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

Если легаси-код работает и не требует вмешательства и поддержки — то можно пока ничего не делать, пусть работает. Будет время — перепишем на новый фреймворк, а если нет, то и так пока поработает.

А если нужно срочное вмешательство — пахнет бедой. Зовите менеджеров.

Источник

legacy

to hand down a legacy — оставить наследство

legacy software информ. — унаследованное програмное обеспечение

legacy costs амер.; эк. — унаследованные издержки (расходы на корпоративные пенсии, медицинское страхование бывших сотрудников; особенно обременительны для уменьшающихся компаний)

Смотреть что такое «legacy» в других словарях:

legacy — leg·a·cy / le gə sē/ n pl cies [Medieval Latin legatio, from Latin legare to bequeath]: a gift of property by will; specif: a gift of personal property by will: bequest see also ademption compare devise conjoint leg … Law dictionary

Legacy — or legacies may refer to:Buildings* Legacy Tower, a Skyscraper under construction in Chicago * Legacy Village, an outdoor shopping complex in Lyndhurst, OhioComics* Legacy (heroclix), the fourth DC Heroclix set produced by Wizkids * Legacy Virus … Wikipedia

Legacy — Leg a*cy (l[e^]g [.a]*s[y^]), n.; pl. ( s[i^]z). [L. (assumed) legatia, for legatum, from legare to appoint by last will, to bequeath as a legacy, to depute: cf. OF. legat legacy. See .] 1. A gift of property by will, esp. of… … The Collaborative International Dictionary of English

Legacy — (englisch Erbe) bezeichnet: ein deutschsprachiges Musikmagazin, Legacy (Musikmagazin) in der Wirtschaftsinformatik eine historisch gewachsene Anwendung, siehe Legacy System Subaru Legacy, ein Mittelklasseauto einen amerikanischen Film aus dem… … Deutsch Wikipedia

Legacy — (Сульмона,Италия) Категория отеля: Адрес: Vico Dell Ospedale 54, 67039 Сульмона, Италия … Каталог отелей

Legacy — [dt. »Vermächtnis«] die, ältere Datenbestände, die möglicherweise nicht mehr problemlos genutzt werden können, weil neue Programme, ein neues Betriebssystem oder ein neues Computersystem eingeführt wurden. Legacy wird auch generell als… … Universal-Lexikon

legacy — late 14c., body of persons sent on a mission, from O.Fr. legatie legate s office, from M.L. legatia, from L. legatus ambassador, envoy, noun use of pp. of legare appoint by a last will, send as a legate (see LEGATE (Cf. legate)). Sense of… … Etymology dictionary

legacy — [n] inheritance, heritage bequest, birthright, devise, endowment, estate, gift, heirloom, throwback, tradition; concepts 337,710 … New thesaurus

legacy — ► NOUN (pl. legacies) 1) an amount of money or property left to someone in a will. 2) something handed down by a predecessor. ► ADJECTIVE ▪ (of computer hardware or software) that has been superseded but is difficult to replace because of its… … English terms dictionary

legacy — [leg′ə sē] n. pl. legacies [ME legacie < OFr < ML legatia < L legatus: see LEGATE] 1. money or property left to someone by a will; bequest 2. anything handed down from, or as from, an ancestor ☆ 3. a student applying or admitted to a… … English World dictionary

legacy — A disposition of personalty by will. A bequest. In a technical sense and strictly construed, legacy is a gift or bequest by will of personal property, whereas a devise is a testamentary disposition of real estate, but such distinction will not be … Black’s law dictionary

Источник

Код без тестов — легаси

Если вы работаете в IT, то о легаси вы слышите часто — обычно с множеством негативных коннотаций. Понятно, что это не «хороший код», но какой? Может старый, может не поддерживаемый или не обновляемый, а может просто чужой? Есть ли «полноценное» определение «легаси», на которое можно ссылаться? А когда разберемся — что нам делать с легаси? Попробуем разобраться. Спойлер: выводы неочевидны.

Легаси что это значит. Смотреть фото Легаси что это значит. Смотреть картинку Легаси что это значит. Картинка про Легаси что это значит. Фото Легаси что это значит

Автор — Николас Карло, веб-разработчик в Busbud (Монреаль, Канада). Специализируется на легаси. В свободное время организует митап Software Crafters и помогает с конференциями SoCraTes Canada и The Legacy of SoCraTes.

Данная статья была скомпилирована (и отредактирована) из двух статей Николаса: «What is Legacy Code? Is it code without tests?» и «The key points of Working Effectively with Legacy Code». Показалось логичным рассказать о том, что такое легаси, а потом — как с ним работать.

Что такое «легаси»?

Возможно, если вы задавались этим вопросом, то встречали определение от Майкла Физерса. Майкл выпустил книгу «Working Effectively with Legacy Code» в 2004 году, но она до сих пор актуальна. Комикс это отлично иллюстрирует.

Легаси что это значит. Смотреть фото Легаси что это значит. Смотреть картинку Легаси что это значит. Картинка про Легаси что это значит. Фото Легаси что это значит

В своей книге Майкл пишет своё определение:

«Для меня легаси — это просто код без тестов».

Почему Физерс так считает? Потому что по его многолетнему опыту без тестов обычно трудно узнать всё, что код умеет. Если тестов нет, то для понимания, что код делает, вам нужно внимательно его прочитать, воспроизвести программу в своей голове и представить все возможные сценарии. Потом вы поменяете код и нужно снова представить все сценарии. Или проверить их вручную, но всегда есть шанс что-то сломать.

Это хорошее определение: чаще всего тесты отсутствуют, так что это хорошее начало. Но это ещё не всё — есть нюансы.

Код с тестами также может быть легаси. Если вы читаете тесты, но не можете понять, что должен делать код — они отстой. Плохие тесты только мешают: тестируемый код так же трудно отрефакторить, как если бы у него не было тестов, а может даже и сложнее!

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

Перейдём к моему определению легаси.

Легаси — это ценный код, который вы боитесь менять.

Например, мы ищем первопричину ошибки или выясняете, куда вставить свою функцию. Мы хотим поменять код, но это трудно, потому что непонятно как не нарушить существующее поведение. Готово — у нас легаси!

Мы переоцениваем сложность незнакомого кода. Поэтому мы думаем, что код, который писали не мы — устаревший. Это работает и с нашими прошлыми проектами, когда мы не можем понять, что закладывали и имели в виду, когда писали эту мешанину на экране.

Хорошие тесты помогают легко менять незнакомый код. А плохие тесты не помогают. Отсюда и определение Физерса.

С легаси помогает время. Парадоксально: обычно время превращает любой код в легаси, но чтобы его понять нам также помогает время. Если вы начали работать над легаси и это трудно — подождите. Да, большая часть кода ужасна, но вы привыкнете и лучше поймете его причуды и особенности.

Легаси не виновато в том, что оно такое. Большая часть кода ужасна, потому что это результат работы многих людей в течение долгого времени с противоречивыми требованиями и под давлением дедлайнов. Это Рецепт Устаревшего Кода™. Когда мало времени и недостаточно знаний — рождаются костыли (ну вы знаете). В конце концов, мы достигнем состояния, когда каждое движение приводит к ошибке, а реализация любой функции занимает целую вечность.

А теперь один из важнейших нюансов.

Легаси — это код, который мы изо всех сил пытаемся понять, чтобы поменять.

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

В итоге мы получаем, что легаси это:

который мы пытаемся понять, чтобы отрефакторить;

Как же эффективно работать с легаси?

Легаси — код, который мы пытаемся понять, чтобы отрефакторить. Задача рефакторинга в том, чтобы сохранить существующее поведение кода. Как без тестов мы будем уверены, что ничего не сломали? Нам нужна обратная связь. Автоматизированная обратная связь — ещё лучше.

Добавить тесты, а затем внести изменения

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

Но чтобы запустить тесты, мы должны поменять код. Возникает парадокс легаси. Мы обречены? Нет. Поменяем как можно меньше кода для тестов:

Определим точки изменения — «швы».

Первые два пункта самые сложные, а как только доберёмся до тестов, мы знаем, что делать.

Найти «швы» для разрыва зависимостей

Обычно когда мы добавляем тесты к легаси возникает «проблема зависимостей»: код, который мы хотим протестировать, не может работать, потому что ему нужно что-то сложное для тестирования. Иногда это соединение с базой данных, иногда вызов на сторонний сервер, а иногда — параметр, который сложно создать. А чаще всё и сразу.

Чтобы протестировать код, нужно разбить эти зависимости в тестах. Для этого необходимо выявить «швы».

«Шов» — место, где можно изменить поведение программы, не меняя код.

«Швы» бывают разные. Если это объектно-ориентированный ЯП, то обычно это объект, например, в JavaScript.

Допустим, метод connect() вызывает проблемы, когда мы пытаемся поместить код в тесты. Получается, что весь класс — это «шов», который можно поменять. Можно расширить этот класс в тестах, чтобы предотвратить его подключение к реальной БД.

Есть и другие виды швов. Если язык позволяет изменять поведение кода без изменения исходного кода, у нас есть точка входа в написание тестов. Кстати о тестах…

Напишем unit-тесты

Дискуссии о лучших практиках тестирования обычно перерастают в холивары. Применять принцип пирамиды тестов, и писать максимум unit-тестов? Или использовать «Кубок тестирования» и писать в основном интеграционные?

Почему советы такие противоречивые? Потому что у них нет единого определения того, что такое «unit». Одни люди говорят об «интеграционных тестах» и тестируют всю библиотеку, а другие тестируют каждый класс по отдельности.

Чтобы избежать путаницы, Майкл даёт четкое определение того, что такое НЕ unit-тест:

он не работает быстро (

Похожие и интересные статьи:

О том, над чем в целом мы тут работаем: монолит, монолит, опять монолит.

Кратко об истории Open Source — просто развлечься (да и статья хорошая).

Больше новостей про разработку в Додо Пицце я пишу в канале Dodo Pizza Mobile. Также подписывайтесь на чат Dodo Engineering, если хотите обсудить эту и другие наши статьи и подходы, а также на канал Dodo Engineering, где мы постим всё, что с нами интересного происходит.

А если хочешь присоединиться к нам в Dodo Engineering, то будем рады — сейчас у нас открыты вакансии iOS-разработчиков (а ещё для Android, frontend, SRE и других).

Источник

Что такое legacy code?

Не могу найти перевод. Можете объяснить в двух словах что это такое? Что за понятие?

Легаси что это значит. Смотреть фото Легаси что это значит. Смотреть картинку Легаси что это значит. Картинка про Легаси что это значит. Фото Легаси что это значит

5 ответов 5

Legacy code — тяжелая наследственность : ) Устаревший код, который более не поддерживается и не обновляется, но используется. Второе значение — код от сторонних разработчиков, или из старых версий.

Суммирорав все определения, которые встречались, для себя вывел следующее.

Legacy code — код, подпадающий под один или несколько признаков:

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

Легаси что это значит. Смотреть фото Легаси что это значит. Смотреть картинку Легаси что это значит. Картинка про Легаси что это значит. Фото Легаси что это значит

Легаси что это значит. Смотреть фото Легаси что это значит. Смотреть картинку Легаси что это значит. Картинка про Легаси что это значит. Фото Легаси что это значит

Всё ещё ищете ответ? Посмотрите другие вопросы с метками терминология или задайте свой вопрос.

Связанные

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.12.16.41042

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

Легаси что это значит

Легаси что это значит. Смотреть фото Легаси что это значит. Смотреть картинку Легаси что это значит. Картинка про Легаси что это значит. Фото Легаси что это значит Легаси что это значит. Смотреть фото Легаси что это значит. Смотреть картинку Легаси что это значит. Картинка про Легаси что это значит. Фото Легаси что это значит Легаси что это значит. Смотреть фото Легаси что это значит. Смотреть картинку Легаси что это значит. Картинка про Легаси что это значит. Фото Легаси что это значит

Откройте возможности нейронного машинного перевода PROMT

PROMT.One (www.translate.ru) – бесплатный онлайн-переводчик на основе нейронных сетей (NMT) для азербайджанского, английского, арабского, греческого, иврита, испанского, итальянского, казахского, китайского, корейского, немецкого, португальского, русского, татарского, турецкого, туркменского, узбекского, украинского, финского, французского, эстонского и японского языков.

Изучайте времена и формы глаголов в английском, немецком, испанском, французском и русском языках в разделе Спряжение и склонение. Учите употребление слов и выражений в разных Контекстах. Мы собрали для вас миллионы примеров перевода на разные языки, которые помогут вам в изучении иностранных языков и подготовке домашних заданий.

Переводите в любом месте и в любое время с помощью мобильного переводчика PROMT.One для iOS и Android. Попробуйте голосовой и фотоперевод, скачайте языковые пакеты для офлайн-перевода.

Поделиться переводом

Но сейчас вы можете переводить только 999 символов за один раз.

Пожалуйста, войдите или зарегистрируйтесь, чтобы переводить до 5 000 символов единовременно. войти / зарегистрироваться

Легаси что это значит. Смотреть фото Легаси что это значит. Смотреть картинку Легаси что это значит. Картинка про Легаси что это значит. Фото Легаси что это значит

Добавить в избранное

Для добавления в Избранное необходимо авторизоваться

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *