Início > Qualidade de Código > Números Mágicos

Números Mágicos

Um dos principais fatores que tornam um código ruim e difícil de ler é o aparecimento dos Números Mágicos.

Os Números Mágicos são um dos problemas mais antigos da programação. São valores contantes que representam valores próprios do domínio da aplicação. Eles geralmente não são óbvios, ou seja, não explicam o que fazem ou o motivo pelo qual estão sendo usados. Veja um exemplo:


public void MoverPartícula(double tempo)
{
this.posicao += 10.5 * tempo;
}

O método acima movimenta uma partículá utilizando a equação do movimento uniforme S = So + V x T. Dessa forma, o valor 10.5 representa a velocidade da partícula. Note que essa informação não está explícita no código, sendo necessário alguma explicação a respeito desse valor.

Números MágicosEncontramos o primeiro problema nos Números Mágicos: eles não deixam claro o que são (nem o que representam).

Outro problema ocorre quando um Número Mágico aparece em vários locais do código. Caso seja necessário modificar o valor, será preciso alterar todos os locais em que ele aparce. E esse procedimento pode ser trabalhoso, se ele aparecer 50 lugares diferentes, por exemplo.

Aí está mais um problema: Números Mágicos deixam o código difícil de ser mantido/alterado.

Para solucionar esses problemas, o melhor a se fazer é criar uma variável (ou atributo) que encapsule esse número.


private double readonly VELOCIDADE_PARTICULA = 10.5;

Alteramos agora os locais onde valor aparece, para utilizar a variável. O método MoverPartícula fica assim:


public void MoverPartícula(double tempo)
{
this.posicao += VELOCIDADE_PARTICULA * tempo;
}

Agora, qualquer alteração no valor da velocidade será feita apenas em um lugar (alterando-se o atributo) e o código ficou mais fácil de ser entendido, devido ao nome explicativo que representa totalmente o valor encapsulado. Criamos, assim, um código limpo.

Anúncios
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: