---
title: "Substituir Número Mágico por Constante Simbólica"
type: "refactoring-technique"
slug: "replace-magic-number-with-symbolic-constant"
url: "http://localhost:3000/pt-br/replace-magic-number-with-symbolic-constant.md"
category: "Organizing Data"
description: "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."
languages: ["java", "csharp", "php", "python", "typescript"]
---
# 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.

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

## 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).
## Code Examples

### java

```java
// 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;
}
```

### csharp

```csharp
// Before
double PotentialEnergy(double mass, double height) 
{
  return mass * height * 9.81;
}

// After
const double GRAVITATIONAL_CONSTANT = 9.81;

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

### php

```php
// Before
function potentialEnergy($mass, $height) {
  return $mass * $height * 9.81;
}

// After
define("GRAVITATIONAL_CONSTANT", 9.81);

function potentialEnergy($mass, $height) {
  return $mass * $height * GRAVITATIONAL_CONSTANT;
}
```

### python

```python
// Before
def potentialEnergy(mass, height):
    return mass * height * 9.81

// After
GRAVITATIONAL_CONSTANT = 9.81

def potentialEnergy(mass, height):
    return mass * height * GRAVITATIONAL_CONSTANT
```

### typescript

```typescript
// Before
potentialEnergy(mass: number, height: number): number {
  return mass * height * 9.81;
}

// After
static const GRAVITATIONAL_CONSTANT = 9.81;

potentialEnergy(mass: number, height: number): number {
  return mass * height * GRAVITATIONAL_CONSTANT;
}
```

