Com a experiência, chega o julgamento de saber quando o código é realmente ruim e quando é apenas escrito em um estilo diferente. Se for perfeitamente funcional e sustentável, e houver uma boa cobertura de teste automatizado , não será ruim e você só precisará abrir sua mente. Você provavelmente aprenderá alguma coisa. Código incorreto não é funcional e pode ser mantido.
Aqui estão alguns marcadores de código realmente ruim:
- Grandes blocos de lógica foram duplicados em vez de refatorados.
- Dependências circulares entre classes ou pacotes
- Acoplamento alto; baixa coesão
- Variáveis não utilizadas, gravando em variáveis que nunca são lidas, código inacessível.
- Reimplementação de funções padrão da biblioteca, por exemplo, formatação de data.
- Lógica desnecessariamente complexa; ou seja, 50 linhas de código onde 10 seria bom.
- Nenhum comentário descrevendo o objetivo de classes ou métodos.
- Comentários enganosos.
A falta de testes automatizados não significa que o código esteja incorreto, mas significa que o projeto está incorreto.
Isso não é uma questão de gosto; essas práticas tornam a manutenção do programa muito mais cara.
Como você se prepara?
Aceite o fato de levar algum tempo para poder trabalhar com êxito em uma nova base de código. Se for "perfeitamente sustentável" e houver alta cobertura de teste, leva menos tempo, mas ainda não acontecerá imediatamente. Se o código estiver incorreto, a primeira coisa que faço é avisar às partes interessadas que ele está em mau estado e o progresso inicial será lento. Se eles são céticos, faço backup da minha reivindicação, mostrando a eles uma amostra de problemas no código real e explicando como isso varia de acordo com as melhores práticas do setor.