---
title: "Fractionner une variable temporaire"
type: "refactoring-technique"
slug: "split-temporary-variable"
url: "http://localhost:3000/fr/split-temporary-variable.md"
category: "Composing Methods"
description: "Problème : vous avez une variable locale utilisée pour stocker différentes valeurs intermédiaires à l'intérieur d'une méthode (à l'exception des variables de boucle). Solution : utilisez des variables différentes pour des valeurs différentes. Chaque variable ne doit être responsable que d'une seule chose en particulier."
languages: ["java", "csharp", "php", "python", "typescript"]
---
# Fractionner une variable temporaire

> Problème : vous avez une variable locale utilisée pour stocker différentes valeurs intermédiaires à l'intérieur d'une méthode (à l'exception des variables de boucle). Solution : utilisez des variables différentes pour des valeurs différentes. Chaque variable ne doit être responsable que d'une seule chose en particulier.

## Problem

Vous avez une variable locale utilisée pour stocker différentes valeurs intermédiaires à l'intérieur d'une méthode (à l'exception des variables de boucle).

## Solution

Utilisez des variables différentes pour des valeurs différentes. Chaque variable ne doit être responsable que d'une seule chose en particulier.

## Why Refactor

Si vous lésinez sur le nombre de variables à l'intérieur d'une fonction et que vous les réutilisez à des fins variées et sans rapport, vous rencontrerez forcément des problèmes dès que vous devrez modifier le code contenant ces variables. Vous devrez revérifier chaque utilisation de la variable pour vous assurer que les valeurs correctes sont employées.

## Benefits

* Chaque composant du code du programme ne doit être responsable que d'une seule et unique chose. Cela facilite grandement la maintenance du code, car vous pouvez facilement remplacer une chose particulière sans craindre d'effets indésirables.
* Le code devient plus lisible. Si une variable a été créée il y a longtemps, à la hâte, elle porte probablement un nom qui n'explique rien : `k`, `a2`, `value`, etc. Mais vous pouvez remédier à cette situation en donnant aux nouvelles variables des noms compréhensibles et explicites. De tels noms pourraient ressembler à `customerTaxValue`, `cityUnemploymentRate`, `clientSalutationString` et autres.
* Cette technique de refactorisation est utile si vous prévoyez d'utiliser [Extraire une méthode](/fr/extract-method) par la suite.

## How to Refactor

1. Trouvez le premier endroit dans le code où une valeur est affectée à la variable. Vous devez y renommer la variable avec un nom qui correspond à la valeur affectée.
2. Utilisez le nouveau nom à la place de l'ancien aux endroits où cette valeur de la variable est utilisée.
3. Répétez l'opération autant que nécessaire pour les endroits où une valeur différente est affectée à la variable.
## Relations

**Helps you do**

- [Extraire une méthode](/fr/extract-method.md)

**Similar techniques**

- [Extraire une variable](/fr/extract-variable.md)
- [Supprimer les affectations aux paramètres](/fr/remove-assignments-to-parameters.md)

**Opposite refactorings**

- [Intégrer une variable temporaire](/fr/inline-temp.md)

## Code Examples

### java

```java
// Before
double temp = 2 * (height + width);
System.out.println(temp);
temp = height * width;
System.out.println(temp);

// After
final double perimeter = 2 * (height + width);
System.out.println(perimeter);
final double area = height * width;
System.out.println(area);
```

### csharp

```csharp
// Before
double temp = 2 * (height + width);
Console.WriteLine(temp);
temp = height * width;
Console.WriteLine(temp);

// After
readonly double perimeter = 2 * (height + width);
Console.WriteLine(perimeter);
readonly double area = height * width;
Console.WriteLine(area);
```

### php

```php
// Before
$temp = 2 * ($this->height + $this->width);
echo $temp;
$temp = $this->height * $this->width;
echo $temp;

// After
$perimeter = 2 * ($this->height + $this->width);
echo $perimeter;
$area = $this->height * $this->width;
echo $area;
```

### python

```python
// Before
temp = 2 * (height + width)
print(temp)
temp = height * width
print(temp)

// After
perimeter = 2 * (height + width)
print(perimeter)
area = height * width
print(area)
```

### typescript

```typescript
// Before
let temp = 2 * (height + width);
console.log(temp);
temp = height * width;
console.log(temp);

// After
const perimeter = 2 * (height + width);
console.log(perimeter);
const area = height * width;
console.log(area);
```

