Подтвердить что ты не робот

Что делает наследие кода?

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

Обновление в ответ на: "Что-то передано от предка или предшественника или из прошлого" http://www.thefreedictionary.com/legacy. Очевидно, вы хотели узнать что-то еще. Не могли бы вы уточнить или расширить свой вопрос? С. Лотт

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

С другой стороны, очевидно, что сохраняется прежний код.

4b9b3361

Ответ 1

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

Ответ 2

Что делает код, устаревший код?

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

Вы проливали слезы и пытались выяснить, что делать со всем этим мусором.

Ответ 3

Майкл Перс имеет интересное определение в своей книге "Эффективная работа с устаревшим кодом". По его словам, унаследованный код - это код без автоматических тестов.

Ответ 4

Это очень общий (и часто злоупотребляемый термин), но любое из следующих было бы законным основанием для вызова наследия приложения:

  • База кода основана на языке/платформе, которая полностью не поддерживается производителем оригинального продукта (часто упомянутый производитель вышел из бизнеса).

  • (действительно 1a) База кода или платформа, на которой она построена, настолько старая, что получение квалифицированных или опытных разработчиков для системы является трудным и дорогостоящим.

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

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

Ответ 5

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

Ответ 6

По словам Майкла Фезерса (Michael Feathers), автора превосходной " Эффективной работы с устаревшим кодом", устаревший код - это код, который не имеет тестов. Когда нет способа узнать, что ломается, когда меняется этот код.

Главное, что отличает унаследованный код от не унаследованного, - это тесты, а точнее отсутствие тестов. Мы можем понять это с помощью небольшого мысленного эксперимента: насколько легко было бы изменить вашу кодовую базу, если бы она могла откусить назад, если бы она могла сказать вам, когда вы допустили ошибку? Это было бы довольно легко, не так ли? Большая часть страха, связанного с внесением изменений в большие базы кода, - это боязнь вносить незначительные ошибки; боязнь непреднамеренного изменения вещей. С помощью тестов вы можете сделать вещи лучше безнаказанно. Для меня разница настолько важна, что она подавляет любое другое различие. С помощью тестов вы можете сделать вещи лучше. Без них вы просто не знаете, становится ли все лучше или хуже.

Ответ 7

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

Ответ 8

Однажды коллега сказал мне, что унаследованный код представляет собой любой код, который вы сами не написали.

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

Бригада TDD может предположить, что любой код без тестов является устаревшим кодом.

Ответ 9

http://en.wikipedia.org/wiki/Legacy_code

"Устаревший код - это исходный код, который больше не поддерживается или не производится"

Ответ 10

Отсутствует какой-либо код с поддержкой (или документацией). Будь то:

  • встроенные комментарии
  • техническая документация
  • голосовая документация (человек, который ее написал)
  • модульные тесты, документирующие работу кода

Ответ 11

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

Ответ 12

Никто не собирается читать это, но я чувствую, что другие ответы не совсем корректны:

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

Ответ 13

Код (или что-то еще, действительно) становится "наследием", когда он заменен чем-то более новым/лучшим, и тем не менее, несмотря на это, он все еще используется и хранится "в дикой природе".

Ответ 14

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

Ответ 15

День, когда вы боитесь рефакторинга вашего кода, это день, когда ваш код стал унаследованным.

Ответ 16

Я считаю код "устаревшим", если применимы какие-либо или все из следующих условий:

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

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

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

Ответ 17

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

Это может произойти двумя способами:

  • Код не подходит для изменения
  • Семантика кода была заменена на кремний

1) легче распознать. Это программное обеспечение имеет фундаментальные ограничения, позволяющие ему не отставать от экосистемы вокруг нее. Например, система, построенная вокруг алгоритма O (n ^ 2), не будет масштабироваться за определенную точку и должна быть переписана, если требования будут двигаться в этом направлении. Другим примером является код, использующий библиотеки, которые не поддерживаются в последних версиях ОС.

2) Сложнее распознать, но весь код такого рода разделяет характеристику, которую люди боятся изменить. Это может быть связано с тем, что он был плохо написан/документирован для начала, потому что он не проверен, или потому, что он нетривиальный, и оригинальные авторы, которые его поняли, покинули команду.

Символы ASCII/Unicode, содержащие живой код, имеют смысловое значение, "почему", "что есть" и в какой-то мере "как" в сознании людей, связанных с ним. Устаревший код либо не является владельцем, либо владельцы не имеют значения, связанного с большими его частями. Как только это произойдет (и это может произойти на следующий день с действительно плохо написанным кодом), чтобы изменить этот код, кто-то должен изучить его и понять. Этот процесс составляет значительную часть времени, необходимого для его записи.

Ответ 18

Честно говоря, устаревший код - это любой код, фреймворк, api, другого программного обеспечения, который больше не "круто". Например, COBOL единогласно считается наследием, а APL - нет. Теперь можно также сделать так, что COBOL считается устаревшим и APL не потому, что он имеет примерно в 1 м раз базу установки как APL. Однако, если вы говорите, что вам нужно работать над кодом APL, ответ не будет "о нет, это наследие", а скорее "о, мой бог, угадайте, что вы ничего не будете делать в следующем столетии", видите разницу?

Ответ 19

Устаревший код - это все, что написано более месяца назад: -)

Ответ 20

Это часто любой код, который не написан на модных языках сценариев du jour, и я только наполовину шучу.

Ответ 21

Это общий термин, встречающийся довольно часто (и довольно обобщенно) в программной экосистеме.

Ну, мне нравится думать об унаследованном коде как о унаследованном коде. Это просто код, который был написан в прошлом. В большинстве случаев устаревший код не соответствует новым/текущим практикам и часто считается архаичным.