ConstructiCat Logo
CodeBust.
Browse section ▾

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

Problem

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

Solution

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

##Example

Before
double potentialEnergy(double mass, double height) {
  return mass * height * 9.81;
}
After
static final double GRAVITATIONAL_CONSTANT = 9.81;

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

##Why Refactor

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.

##Benefits

  • 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).

##How to Refactor

  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).