Pergunta

Já ouvi muitos desenvolvedores se referem ao código como "legado". Na maioria das vezes é o código que foi escrito por alguém que já não trabalha no projeto. O que é que torna o código, código legado?

Atualização em resposta a: "Algo transmitida de um ancestral ou um predecessor ou do passado" http://www.thefreedictionary.com/legacy . É claro que você queria saber algo mais. Poderia esclarecer ou expandir a sua pergunta? S.Lott

Eu estou procurando os sintomas de código legado que o tornam inutilizáveis ??ou um pesadelo para trabalhar. Quando é melhor jogá-lo fora? É minha opinião que o código deve ser jogado fora com mais freqüência e que reinventar a roda é parte valiosa do desenvolvimento. O ideal acadêmico de não reinventar a roda é um agradável mas não é muito prático.

Por outro lado, há, obviamente, código legado vale a pena manter.

Foi útil?

Solução

Ao usar o hardware, software, APIs, linguagens, tecnologias ou recursos que são ou não apoiados ou ter sido substituído, normalmente combinada com pouca ou nenhuma possibilidade de nunca substituir esse código, em vez de usá-lo até que ele ou as matrizes do sistema.

Outras dicas

O que é que torna o código, código legado?

Tal como acontece com o legado comum, quando o autor está morto ou ausente, você como um herdeiro obter todos ou alguns de seu código.

Você derramou algumas lágrimas e tentar descobrir o que fazer com todo esse lixo.

Michael Feathers tem uma definição interessante em seu livro trabalhar efetivamente com Legacy Code. Segundo ele código legado é código sem testes automatizados.

É muito geral (e muitas vezes abusado prazo), mas qualquer um dos seguintes seria razões legítimas para chamar um legado app:

  1. A base de código é baseado em uma linguagem / plataforma que é inteiramente suportado pelo fabricante do produto original (muitas vezes disse fabricante tenha saído do negócio).

  2. (realmente 1a) O código base ou plataforma sobre a qual ela é construída é tão velho que a obtenção de desenvolvedores qualificados ou experientes para o sistema é difícil e caro.

  3. A aplicação suporta algum aspecto do negócio que não está mais crescido de forma activa e para as quais alterações são extremamente raros, normalmente para corrigi-lo se algo muda totalmente inesperados em torno dele (o exemplo canônico sendo a questão Y2K) ou se alguns regulamento / forças de pressão externos de TI. Desde ambos os motivos estão pressionando e desenvolvimento normalmente inevitável, mas não significativa ocorreu no projeto, é provável que essas pessoas designadas para lidar com isso vai estar familiarizado com o sistema (e está comportamentos e complexidades acumulado). Nestes casos, isso costumava ser motivo para aumentar a percepção e planejado para o risco associado ao projeto.

  4. O sistema tem / ou está sendo substituída por outra. Como tal, o sistema pode ser usado para muito menos do que inicialmente previsto, ou talvez apenas como um meio de visualização de dados históricos.

Legado geralmente refere-se ao código que não está mais sendo desenvolvido - o que significa que se você usá-lo, você tem que usá-lo em seus termos originais - você não pode simplesmente editá-lo para apoiar a forma como o mundo olha hoje. Por exemplo, o código legado tem que rodar em hardware que não pode existir hoje -. Ou já não é suportado

De acordo com Michael Feathers, o autor do excelente trabalhar efetivamente com Legacy Code , código legado é um código que não tem provas. Quando não há nenhuma maneira de saber o que quebra quando este alterações no código.

A principal coisa que distingue código legado de código não-legado é testa, ou melhor, uma falta de testes. Nós pode ter uma noção deste com um pouco experimento de pensamento: como seria fácil seja para modificar a sua base de código se poderia morder de volta, se ele poderia dizer-lhe quando você cometeu um erro? Seria muito fácil, não é? A maioria dos medo envolvido em fazer mudanças para grandes bases de código é o medo de introduzindo erros sutis; medo de mudar as coisas inadvertidamente. Com testes, você pode fazer as coisas melhor com impunidade. Para mim, a diferença é tão crítico, que supera qualquer outra distinção. Com os testes, você pode fazer as coisas melhor. Sem eles, você só Não sei se as coisas estão ficando melhor ou pior.

Um colega me disse uma vez que o código legado foi qualquer código que você não tivesse escrito por si.

Provavelmente, é apenas um termo pejorativo para o código que nós não gostamos mais por qualquer razão (normalmente porque não é legal ou moda, mas ele funciona).

A brigada TDD pode sugerir que qualquer código sem testes é código legado.

código legado é o código de fonte que se refere a um sistema operativo não mais suportada ou fabricado ou outra tecnologia computador.

Ninguém vai ler isso, mas eu sinto as outras respostas não entendo muito bem:

  1. Tem valor, se não fosse útil, teria sido jogado fora há muito tempo
  2. É difícil raciocinar sobre porque qualquer um
    1. A falta de documentação,
    2. autor original não pode ser encontrada ou esqueceu (sim 2 meses mais tarde o seu código pode ser código legado muito !!),
    3. A falta de testes ou sistema de tipos
    4. Não seguir as práticas modernas (ou seja, nenhum contexto para segurar também)
  3. Existe um requisito para alterar ou estendê-lo. Se não houver um requisito para mudá-lo, não é código legado desde que ninguém se preocupa com isso. Ele faz sua coisa e não há ninguém em torno de chamá-lo de código legado.

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

"código legado é código-fonte que diz respeito a um não mais suportado ou fabricados"

Qualquer código com suporte (ou documentação) faltando. Seja ele:

  • comentários na linha
  • documentação técnica
  • documentação falada (a pessoa que o escreveu)
  • testes de unidade que documentam o funcionamento do código

Para mim código legado é o código que foi escrito antes de uma mudança de paradigma. Ela ainda pode ser muito em uso, mas ele está em processo de ser reformulado para alinhá-la.
por exemplo. código de procedimento de suspensão velha em torno de um sistema OO contrário.

código (ou qualquer outra coisa, realmente) torna-se "legado" quando foi substituído por algo mais novo / melhor, e ainda apesar disso ainda é utilizado e mantido vivo "in the wild".

Preservar código legado não é tanto um ideal acadêmico como é manter código que funciona, não importa o quão mal. Em muitas situações empresariais conservadores, que seria considerado mais prático do que jogá-lo fora e começar de novo a partir do zero. Melhor o diabo que você conhece ...

código legado é o código que é doloroso / caro para se manter atualizado com as exigências em mudança.

Há duas maneiras que isto pode acontecer:

  1. O código não é adequado para a mudança
  2. A semântica do código foram trocados ao silício

1) é o mais fácil dos dois para reconhecer. É um software que tem limites fundamentais tornando-se incapaz de manter-se com o ecossistema em torno dele. Por exemplo, um sistema construído em torno de O (n ^ 2) algoritmo não escala além de um certo ponto e deve ser re-escrita, se os requisitos mover nesse sentido. Outro exemplo é o código usando bibliotecas que não são suportadas nas versões mais recentes do sistema operacional.

2) é mais difícil reconhecer, mas todo o código deste tipo de ações a característica que as pessoas têm medo de mudá-lo. Isso pode ser porque ele foi mal escrito / documentadas, para começar, porque não foi testado, ou porque não é trivial e os autores originais que compreenderam que deixou a equipe.

O ASCII / caracteres Unicode que compreendem código vivos têm significado semântico, o "porque", "o que é" e até certo ponto os "comos", nas mentes das pessoas associadas a ele. código legado ou é un-propriedade ou os proprietários não têm significado associado com grandes porções dela. Quando isso acontecer (e que poderia acontecer no dia seguinte com código realmente mal escrito), para alterar este código, alguém tem que aprendê-lo e compreendê-lo. Este processo é uma fração significativa do tempo que leva para escrevê-lo em primeiro lugar.

O dia que você está com medo de refatorar seu código é o dia em que seu código se tornou legado.

Eu considero código "legado" se qualquer uma ou todas as seguintes condições:

  • Foi escrito usando uma linguagem ou metodologia que é uma geração atrás padrões atuais
  • O código é uma bagunça completa, sem planejamento ou design por trás it
  • Ele é escrito em línguas desatualizados e com um estilo orientado a objetos desatualizado, não
  • É difícil encontrar desenvolvedores que conhecem a língua, porque é tão velho

Ao contrário de alguns dos outros opiniões aqui, eu visto muitos aplicativos modernos que o trabalho decentemente sem testes de unidade. Unidade de teste ainda não pegou com todos. Talvez daqui a dez anos a próxima geração de programadores vão olhar para as nossas aplicações atuais e considerá-los "legado" para que não contém testes de unidade, assim como eu considerar os pedidos não orientados a objeto a ser legado.

Se algumas mudanças precisam ser feitas para uma base de código legado, é melhor do que simplesmente deixá-lo como está e ir com o fluxo. Se o aplicativo precisa de alterações de funcionalidade drásticas, uma revisão GUI, e / ou você não consegue encontrar qualquer pessoa que conheça a linguagem de programação, é hora de jogar fora e começar de novo. Uma palavra de advertência, porém: reescrita a partir do zero pode ser muito demorado, e é difícil saber se você replicado todas as funcionalidades. Você provavelmente vai querer ter casos de teste e testes de unidade escritos para o aplicativo de legado e o novo aplicativo.

Sinceramente código legado é qualquer código, estrutura, api, de outras thta construção software é não "cool" anymore. Por exemplo COBOL é considerado unanimemente como legado enquanto APL não é. Agora pode-se também fazer o caso que COBOL é o legado consideed e APL não porque ele tem sobre os tempos 1m a base de instalar como APL. No entanto, se você disser que você precisa para trabalhar em código APL a resposta não seria "oh não, essas coisas legado", mas sim "Oh meu Deus, acho que você não vai fazer qualquer coisa para o próximo século" ver a diferença?

Este é um termo geral jogado em torno de muitas vezes (e bastante genericamente) no ecossistema de software.

Bem, eu gosto de pensar em código legado como código herdado . Isto é simplesmente código que foi escrito no passado. Na maioria dos casos, o código legado não seguem novos / atual práticas e é muitas vezes considerado arcaico.

código legado é algo escrito mais de um mês atrás: -)

É muitas vezes, qualquer código que não está escrito na linguagem de script moda du jour, e eu sou apenas metade brincando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top