DEV Community

Vinícius Bispo
Vinícius Bispo

Posted on

6

Extraindo Constantes de Números Mágicos

Olá, esse é o meu primeiro post da série refatoração, no qual vou mostrar o que estou aprendendo com o curso Refactoring do Refactoring Guru

O primeiro post vai ser sobre extrair constantes de números mágicos.

Imagine que você tem o seguinte cenário:

def potential_energy(mass, height)
  mass * height * 9.81
end
Enter fullscreen mode Exit fullscreen mode

Não sei se você aprendeu sobre energia potencial gravitacional na escola, mas concorda comigo que não está nada explícito o que representa 9.81?

Vamos refatorar seguindo o "Extraindo Constantes de Números Mágicos"

GRAVITATIONAL_CONSTANT = 9.81

def potential_energy(mass, height)
  mass * height * GRAVITATIONAL_CONSTANT 
end
Enter fullscreen mode Exit fullscreen mode

Mind Blowing

Uau! Agora sim! Agora ficou explícito que o valor de 9.81 é a constante gravitacional

É isso que diz o "Extraindo Constantes de Números Mágicos", ele diz que "Um número mágico é um valor numérico encontrado no código que não tem significado óbvio". Este 'anti-pattern' torna mais difícil entender o programa e refatorar o código"

Os benefícios dessa técnica são inúmeros, entre eles podemos destacar:

  • As constantes podem servir como uma documentação.
  • É muito fácil mudar o valor de uma constante do que buscar por esse número em todo o código, sem o risco de acidentalmente mudar o mesmo número usado para outro propósito.

É isso pessoal! Eu espero que esse artigo os ajude! E se sim, me deixe saber! Até a próxima!

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more