Sobre os números mágicos e a necessidade de refatoração

by SrECosta janeiro 09, 2008 05:45

Olá.

     Direto ao ponto: um número mágico é todo número literal que possui um significado não esclarecido ou não documentado no código. É aquele número que você encontra em fórmulas, cálculos, instruções condicionais e métodos e que não é possível inferir o seu significado.

     Imagine encontrar um trecho de código assim:
     imposto = valorMovimentado * 0.38

     O que significa esse 0.38 na expressão? Você poderia chutar que seria a CPMF mas seria melhor que o código estivesse assim:
     constanteCPMF = 0.38
     imposto = valorMovimentado * constanteCPMF

     Vê a diferença? Ao invés de utilizar números diretamente em suas expressões é mais saudável criar constantes para representá-los e utilizá-las nas expressões. O código fica mais legível e mais prático para sofrer manutenções.

     Além disso, imagine se o valor 0.38 fosse utilizado em 30 lugares diferentes? Caso o valor mudasse para 0.35 seria necessário alterar todos os 30 lugares. Porém, caso tivesse sido utilizado uma constante, bastaria alterar a constante num único lugar e todos os outros 30 estariam automaticamente adequados. Muito melhor, certo?

     Martin Fowler, no livro "Refatoração: Aperfeiçoando o Projeto de Código Existente", chama esse padrão de "Substituir número mágico por constante simbólica". Este livro é fonte muito recomendável para o aprendizado de padrões de refatoração como o que mostrei acima. É um excelente guia de consulta também.

     O autor mantém um site na internet (em inglês) sobre refactoring que é referência para o assunto: site Refactoring.

     Espero que seja útil.

Eduardo.

4.0 ponto(s). Avaliado por 1 pessoas

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

Design e Boas Práticas

Os comentários estão fechados

Powered by BlogEngine.NET 1.4.5.0
Theme by Mads Kristensen | Modified by Mooglegiant

Eduardo Costa

Desenvolvedor de software, empreendedor, marido e criador de quatro gatos em São Paulo, SP.
Sobre o Mutamblog.

Anúncios