---
title: "Remplacer un nombre magique par une constante symbolique"
type: "refactoring-technique"
slug: "replace-magic-number-with-symbolic-constant"
url: "http://localhost:3000/fr/replace-magic-number-with-symbolic-constant.md"
category: "Organizing Data"
description: "Problème : votre code utilise un nombre qui a une certaine signification. Solution : remplacez ce nombre par une constante portant un nom lisible qui explique la signification du nombre."
languages: ["java", "csharp", "php", "python", "typescript"]
---
# Remplacer un nombre magique par une constante symbolique

> Problème : votre code utilise un nombre qui a une certaine signification. Solution : remplacez ce nombre par une constante portant un nom lisible qui explique la signification du nombre.

## Problem

Votre code utilise un nombre qui a une certaine signification.

## Solution

Remplacez ce nombre par une constante portant un nom lisible qui explique la signification du nombre.

## Why Refactor

Un nombre magique est une valeur numérique que l'on rencontre dans le code source mais qui n'a pas de signification évidente. Cet « anti-modèle » rend plus difficile la compréhension du programme et la refactorisation du code.

Des difficultés supplémentaires surgissent encore lorsque vous devez modifier ce nombre magique. La fonction « rechercher et remplacer » ne fonctionnera pas pour cela : le même nombre peut être utilisé à des fins différentes à différents endroits, ce qui signifie que vous devrez vérifier chaque ligne de code qui utilise ce nombre.

## Benefits

* La constante symbolique peut servir de documentation vivante de la signification de sa valeur.
* Il est beaucoup plus facile de modifier la valeur d'une constante que de rechercher ce nombre dans toute la base de code, sans risquer de modifier accidentellement le même nombre utilisé ailleurs dans un autre but.
* Réduit l'utilisation en double d'un nombre ou d'une chaîne dans le code. Ceci est particulièrement important lorsque la valeur est compliquée et longue (comme `3.14159` ou `0xCAFEBABE`).

## How to Refactor

1. Déclarez une constante et affectez-lui la valeur du nombre magique.
2. Trouvez toutes les occurrences du nombre magique.
3. Pour chacun des nombres que vous trouvez, vérifiez bien que le nombre magique correspond, dans ce cas précis, à l'objectif de la constante. Si oui, remplacez le nombre par votre constante. C'est une étape importante, car le même nombre peut signifier des choses absolument différentes (et être remplacé par des constantes différentes, selon le cas).
## 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;
}
```

