---
title: "Supprimer les affectations aux paramètres"
type: "refactoring-technique"
slug: "remove-assignments-to-parameters"
url: "http://localhost:3000/fr/remove-assignments-to-parameters.md"
category: "Composing Methods"
description: "Problème : une valeur est affectée à un paramètre à l'intérieur du corps d'une méthode. Solution : utilisez une variable locale au lieu d'un paramètre."
languages: ["java", "csharp", "php", "python", "typescript"]
---
# Supprimer les affectations aux paramètres

> Problème : une valeur est affectée à un paramètre à l'intérieur du corps d'une méthode. Solution : utilisez une variable locale au lieu d'un paramètre.

## Problem

Une valeur est affectée à un paramètre à l'intérieur du corps d'une méthode.

## Solution

Utilisez une variable locale au lieu d'un paramètre.

## Why Refactor

Les raisons de cette refactorisation sont les mêmes que pour [Diviser une variable temporaire](/fr/split-temporary-variable), mais dans ce cas nous avons affaire à un paramètre et non à une variable locale.

Premièrement, si un paramètre est passé par référence, alors une fois la valeur du paramètre modifiée à l'intérieur de la méthode, cette valeur est transmise à l'argument qui a demandé l'appel de cette méthode. Très souvent, cela se produit accidentellement et entraîne des effets fâcheux. Même si, dans votre langage de programmation, les paramètres sont généralement passés par valeur (et non par référence), cette particularité de codage peut désorienter ceux qui n'y sont pas habitués.

Deuxièmement, l'affectation multiple de valeurs différentes à un même paramètre rend difficile de savoir quelles données le paramètre est censé contenir à un instant donné. Le problème s'aggrave si votre paramètre et son contenu sont documentés alors que la valeur réelle peut différer de ce qui est attendu à l'intérieur de la méthode.

## Benefits

* Chaque élément du programme ne devrait être responsable que d'une seule chose. Cela facilite grandement la maintenance du code par la suite, car vous pouvez remplacer du code en toute sécurité, sans effets de bord.
* Cette refactorisation aide à extraire [le code répétitif dans des méthodes distinctes](/fr/extract-method).

## How to Refactor

1. Créez une variable locale et affectez-lui la valeur initiale de votre paramètre.
2. Dans tout le code de la méthode qui suit cette ligne, remplacez le paramètre par votre nouvelle variable locale.
## Relations

**Helps you do**

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

**Similar techniques**

- [Fractionner une variable temporaire](/fr/split-temporary-variable.md)

## Code Examples

### java

```java
// Before
int discount(int inputVal, int quantity) {
  if (quantity > 50) {
    inputVal -= 2;
  }
  // ...
}

// After
int discount(int inputVal, int quantity) {
  int result = inputVal;
  if (quantity > 50) {
    result -= 2;
  }
  // ...
}
```

### csharp

```csharp
// Before
int Discount(int inputVal, int quantity) 
{
  if (quantity > 50) 
  {
    inputVal -= 2;
  }
  // ...
}

// After
int Discount(int inputVal, int quantity) 
{
  int result = inputVal;
  
  if (quantity > 50) 
  {
    result -= 2;
  }
  // ...
}
```

### php

```php
// Before
function discount($inputVal, $quantity) {
  if ($quantity > 50) {
    $inputVal -= 2;
  }
  ...

// After
function discount($inputVal, $quantity) {
  $result = $inputVal;
  if ($quantity > 50) {
    $result -= 2;
  }
  ...
```

### python

```python
// Before
def discount(inputVal, quantity):
    if quantity > 50:
        inputVal -= 2
    # ...

// After
def discount(inputVal, quantity):
    result = inputVal
    if quantity > 50:
        result -= 2
    # ...
```

### typescript

```typescript
// Before
discount(inputVal: number, quantity: number): number {
  if (quantity > 50) {
    inputVal -= 2;
  }
  // ...
}

// After
discount(inputVal: number, quantity: number): number {
  let result = inputVal;
  if (quantity > 50) {
    result -= 2;
  }
  // ...
}
```

