---
title: "Regrouper une expression conditionnelle"
type: "refactoring-technique"
slug: "consolidate-conditional-expression"
url: "http://localhost:3000/fr/consolidate-conditional-expression.md"
category: "Simplifying Conditional Expressions"
description: "Problème : vous avez plusieurs conditions qui mènent au même résultat ou à la même action. Solution : regroupez toutes ces conditions en une seule expression."
languages: ["java", "csharp", "php", "python", "typescript"]
---
# Regrouper une expression conditionnelle

> Problème : vous avez plusieurs conditions qui mènent au même résultat ou à la même action. Solution : regroupez toutes ces conditions en une seule expression.

## Problem

Vous avez plusieurs conditions qui mènent au même résultat ou à la même action.

## Solution

Regroupez toutes ces conditions en une seule expression.

## Why Refactor

Votre code contient de nombreux opérateurs alternés qui effectuent des actions identiques. La raison pour laquelle les opérateurs sont séparés n'est pas claire.

L'objectif principal du regroupement est d'extraire la condition dans une méthode distincte pour plus de clarté.

## Benefits

* Élimine le code dupliqué du flot de contrôle. Combiner plusieurs conditions qui ont la même « destination » permet de montrer que vous n'effectuez qu'une seule vérification compliquée menant à une seule action.
* En regroupant tous les opérateurs, vous pouvez désormais isoler cette expression complexe dans une nouvelle méthode dont le nom explique l'objectif de la condition.

## How to Refactor

Avant de refactoriser, assurez-vous que les conditions n'ont pas d'« effets de bord » et ne modifient rien d'autre, mais se contentent de renvoyer des valeurs. Les effets de bord peuvent se cacher dans le code exécuté à l'intérieur de l'opérateur lui-même, par exemple lorsque quelque chose est ajouté à une variable en fonction du résultat d'une condition.

1. Regroupez les conditions en une seule expression à l'aide de `and` et `or`. En règle générale, lors du regroupement :

  * Les conditions imbriquées sont jointes avec `and`.
  * Les conditions consécutives sont jointes avec `or`.
2. Appliquez [Extraire une méthode](/fr/extract-method) aux conditions des opérateurs et donnez à la méthode un nom qui reflète l'objectif de l'expression.
## Relations

**Eliminates smells**

- [Code dupliqué](/fr/smells/duplicate-code.md)

## Code Examples

### java

```java
// Before
double disabilityAmount() {
  if (seniority < 2) {
    return 0;
  }
  if (monthsDisabled > 12) {
    return 0;
  }
  if (isPartTime) {
    return 0;
  }
  // Calculer le montant de l'indemnité d'invalidité.
  // ...
}

// After
double disabilityAmount() {
  if (isNotEligibleForDisability()) {
    return 0;
  }
  // Calculer le montant de l'indemnité d'invalidité.
  // ...
}
```

### csharp

```csharp
// Before
double DisabilityAmount() 
{
  if (seniority < 2) 
  {
    return 0;
  }
  if (monthsDisabled > 12) 
  {
    return 0;
  }
  if (isPartTime) 
  {
    return 0;
  }
  // Calculer le montant de l'indemnité d'invalidité.
  // ...
}

// After
double DisabilityAmount()
{
  if (IsNotEligibleForDisability())
  {
    return 0;
  }
  // Calculer le montant de l'indemnité d'invalidité.
  // ...
}
```

### php

```php
// Before
function disabilityAmount() {
  if ($this->seniority < 2) {
    return 0;
  }
  if ($this->monthsDisabled > 12) {
    return 0;
  }
  if ($this->isPartTime) {
    return 0;
  }
  // calculer le montant de l'indemnité d'invalidité
  ...

// After
function disabilityAmount() {
  if ($this->isNotEligibleForDisability()) {
    return 0;
  }
  // calculer le montant de l'indemnité d'invalidité
  ...
```

### python

```python
// Before
def disabilityAmount():
    if seniority < 2:
        return 0
    if monthsDisabled > 12:
        return 0
    if isPartTime:
        return 0
    # Calculer le montant de l'indemnité d'invalidité.
    # ...

// After
def disabilityAmount():
    if isNotEligibleForDisability():
        return 0
    # Calculer le montant de l'indemnité d'invalidité.
    # ...
```

### typescript

```typescript
// Before
disabilityAmount(): number {
  if (seniority < 2) {
    return 0;
  }
  if (monthsDisabled > 12) {
    return 0;
  }
  if (isPartTime) {
    return 0;
  }
  // Calculer le montant de l'indemnité d'invalidité.
  // ...
}

// After
disabilityAmount(): number {
  if (isNotEligibleForDisability()) {
    return 0;
  }
  // Calculer le montant de l'indemnité d'invalidité.
  // ...
}
```

