Legacy Code Gets Worse With Age

Código legado não melhora com o tempo. Ele piora.

Na semana passada, passei três horas corrigindo um bug. Deveria ter levado 20 minutos. O problema era um módulo de validação de 2019. Todos o ignoravam porque "funciona". Não funcionava. Encontrei um comentário TODO de 2020 dentro do arquivo.

Muitas pessoas tratam o código legado como uma dívida opcional. Elas acham que podem pagá-la quando tiverem tempo. O código legado é mais como mofo. Ele se espalha. Ele contamina outras partes do seu sistema. Quanto mais tempo você o ignora, mais caro fica para limpá-lo.

Isso cria um ciclo vicioso:

  • Você herda um projeto bagunçado.
  • Você adiciona mais uma instrução if para fazer sua funcionalidade funcionar.
  • Seis meses depois, outra pessoa faz o mesmo.
  • Um ano depois, o arquivo tem 800 linhas e zero testes.

Este código "funcional" tem custos ocultos:

  • A velocidade de desenvolvimento cai. Você gasta mais tempo lendo o contexto do que escrevendo código.
  • Os bugs aumentam. Corrigir uma coisa quebra outra.
  • O onboarding torna-se difícil. Novos desenvolvedores têm dificuldade para entender por que a lógica está duplicada em todos os lugares.

Fique atento a estes sinais de alerta:

  • Comentários inúteis ou mentirosos.
  • Lógica de negócio duplicada em arquivos diferentes.
  • Dependências circulares e alto acoplamento.

Não tente reescrever tudo. Reescrevimentos completos falham 80% das vezes. Você passa meses reconstruindo o que já existe enquanto o negócio espera por novas funcionalidades.

Use refatoração incremental com testes de caracterização:

  • Capture o comportamento atual com testes, mesmo que ele seja estranho.
  • Refatore sem alterar esse comportamento.
  • Repita até que o código esteja legível.
  • Só então mude o comportamento com testes reais.

Siga estas regras para evitar armadilhas:

  • Nunca refatore sem testes.
  • Não altere o comportamento durante uma refatoração. Um bug pode ser uma funcionalidade não documentada na qual um cliente confia.
  • Não mexa em código quieto. Se um módulo não muda há três anos e não causa problemas, deixe-o como está.

Foque sua energia no código que você toca com frequência.

Fonte: https://dev.to/taina_costa_f/legacy-code-nao-envelhece-como-vinho-quanto-mais-espera-pior-fica-132h