Você já se deparou com “números mágicos” no seu código? Esse é um dos code smells mais comuns de se encontrar por ai e felizmente um dos mais fáceis de se resolver também. O problema acontece quando usamos valores numéricos misteriosos no código, sem nenhuma explicação ou contexto. Isso dificulta a leitura e a manutenção, uma vez que quem está lendo precisa adivinhar o que aquele número significa.
Por exemplo, no trecho de código abaixo não é possível identificar somente pelo código fonte o que são esses números, para conseguir entender essa regra de negócio o desenvolvedor teria que consultar alguma documentação.
public String getCreditTier(int score) {
if (score >= 750) return "Excellent";
if (score >= 650) return "Good";
if (score >= 550) return "Fair";
return "Poor";
}
Felizemente a solução é bem simples: basta mover o valor para uma constante e substituir no código. Essa simples alteração deixa seu código muito mais semântico e legível e fácil de manter por novas pessoas no futuro!
private static final int EXCELLENT_SCORE = 750;
private static final int GOOD_SCORE = 650;
private static final int FAIR_SCORE = 550;
// Note como fica muito mais fácil de entender esse código
public String getCreditTier(int score) {
if (score >= EXCELLENT_SCORE) return "Excellent";
if (score >= GOOD_SCORE) return "Good";
if (score >= FAIR_SCORE) return "Fair";
return "Poor";
}