Removendo código firmemente acoplado
-
18-09-2019 - |
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 .
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:
- Todos trabalhando com você em refatoração vai aprender alguma coisa
- As pessoas aprendem como evitar erros de projeto na estrada
- Todos trabalhando nisso vai obter uma melhor compreensão da base de código