Pergunta

Perdoe-me se este é um ingênuo, mas eu não consegui encontrar nada que atingiu esta pergunta exata.

Eu estou trabalhando com um aplicativo herdado que é muito fortemente acoplados. Estamos retirando algumas das principais funcionalidades, porque vamos estar recebendo essa funcionalidade de um serviço externo.

O que é a melhor maneira de começar a remover o código agora não utilizado? Devo apenas começar na base extrema, remover e refazer meu caminho até a pilha? Durante o almoço, eu vou dar uma olhada trabalhar efetivamente com Legacy Code .

Foi útil?

Solução

Se você pode, e faz sentido em seu domínio do problema, eu iria tentar, durante o desenvolvimento, e tentar manter o código legado funcionando em paralelo com a nova API. E utilizar os resultados da API legado para verificação cruzada que a nova API está funcionando como esperado.

Outras dicas

Eu acho que a coisa mais importante que você pode fazer é refatorar / remover / teste em pedaços muito pequenos. É tedioso e demorado, mas vai ajudar limitar os riscos e erros mais tarde.

Eu também iria começar com o código que é "baixo risco" para a mudança.

O meu conselho é usar findbugs e PMD / CPD (copiar-colar-detector) para remover código morto (código que não podem ou não ser chamado) variáveis ??não utilizadas e código duplicado. Livrar-se de esse lixo vai fazer re-factoring mais fácil.

Em seguida, aprender os mapeamentos de teclas para o re-factoring comum em seu IDE. Extrair método e introduzir variáveis ??devem estar comprometidos com a memória muscular depois de uma hora.

Use a desvantagem principal de código firmemente acoplado a ... sua vantagem! Passo 1: Identificar a área que fornece a funcionalidade redundante que você deseja substituir. Quebrá-lo ... fazer um teste de fumaça rápida de algumas das partes críticas do aplicativo. Receba o sentir.

Passo 2:. Dependendo do que a linguagem é encontrar as ferramentas relevantes de análise de código estático e obter a informação necessária refatoração

Passo 3:. Repita a Etapa 1 em níveis incrementais de estreitamento com o padrão exato

Tudo isso, claro, em um ambiente sandbox. Isto pode parecer um pouco aleatório, mas se você se limitar a testes de funcionalidade crítica ... você pode obter muitas ligações no processo. Você vai certamente identificar o padrão do código legado, se nada mais.

Você absolutamente não pode fazer com com uma versão de desenvolvimento ao vivo [novas funcionalidades sejam adicionadas]. Você deve começar com um congelamento de recurso.

I tendem a olhar para todos os componentes do sistema em uma visão geral e ver os maiores locais de reutilização. De lá, eu iria implementar o padrão de design apropriado para resolvê-lo, e fazer o novo reutilizável componente. casos de gravação de teste para garantir que o novo código funciona como esperado, então refatorar seu código em torno da nova mudança. Em seguida, repita [visão geral, etc] até que esteja satisfeito.

gostaria de sugerir este por muitas razões:

  1. Todos trabalhando com você em refatoração vai aprender alguma coisa
  2. As pessoas aprendem como evitar erros de projeto na estrada
  3. Todos trabalhando nisso vai obter uma melhor compreensão da base de código
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top