Logotipo do ConstructiCat
CodeBust.
Explorar a seção ▾

Substituir Número Mágico por Constante Simbólica.

Problema

Seu código usa um número que tem um certo significado.

Solução

Substitua esse número por uma constante com um nome legível por humanos que explique o significado do número.

##Exemplo

Antes
double potentialEnergy(double mass, double height) {
  return mass * height * 9.81;
}
Depois
static final double GRAVITATIONAL_ACCELERATION = 9.81;

double potentialEnergy(double mass, double height) {
  return mass * height * GRAVITATIONAL_ACCELERATION;
}

##Por que refatorar

Um número mágico é um valor numérico que aparece no código-fonte, mas não tem significado óbvio. Esse “antipadrão” torna mais difícil entender o programa e refatorar o código.

Mais dificuldades surgem quando você precisa alterar esse número mágico. Localizar e substituir não funciona aqui: o mesmo número pode ser usado para propósitos diferentes em lugares diferentes, o que significa que você terá que verificar cada linha de código que usa esse número.

##Benefícios

  • A constante simbólica pode servir como documentação viva do significado do seu valor.

  • É muito mais fácil alterar o valor de uma constante do que procurar esse número por toda a base de código, sem o risco de alterar acidentalmente o mesmo número usado em outro lugar para um propósito diferente.

  • Reduz o uso duplicado de um número ou string no código. Isso é especialmente importante quando o valor é complicado e longo (como 3.14159 ou 0xCAFEBABE).

##Como refatorar

  1. Declare uma constante e atribua a ela o valor do número mágico.

  2. Encontre todas as menções ao número mágico.

  3. Para cada um dos números que você encontrar, verifique bem se o número mágico, neste caso específico, corresponde ao propósito da constante. Se sim, substitua o número pela sua constante. Este é um passo importante, pois o mesmo número pode significar coisas absolutamente diferentes (e ser substituído por constantes diferentes, conforme o caso).