---
title: "Instructions switch"
type: "code-smell"
slug: "switch-statements"
url: "http://localhost:3000/fr/smells/switch-statements.md"
category: "Object-Orientation Abusers"
description: "Vous avez un opérateur switch complexe ou une suite d'instructions if."
---
# Instructions switch

> Vous avez un opérateur switch complexe ou une suite d'instructions if.

## Signs and Symptoms

Vous avez un opérateur `switch` complexe ou une suite d'instructions `if`.

## Reasons for the Problem

L'utilisation relativement rare des opérateurs `switch` et `case` est l'une des marques distinctives du code orienté objet. Souvent, le code d'un même `switch` peut être dispersé à différents endroits du programme. Lorsqu'une nouvelle condition est ajoutée, vous devez retrouver tout le code `switch` et le modifier.

En règle générale, lorsque vous voyez un `switch`, vous devriez penser au polymorphisme.

## Payoff

* Meilleure organisation du code.
## Relations

**Treated by**

- [Extraire une méthode](/fr/extract-method.md)
- [Déplacer une méthode](/fr/move-method.md)
- [Remplacer un code type par des sous-classes](/fr/replace-type-code-with-subclasses.md)
- [Remplacer le code de type par State/Strategy](/fr/replace-type-code-with-state-strategy.md)
- [Remplacer le conditionnel par du polymorphisme](/fr/replace-conditional-with-polymorphism.md)
- [Remplacer un paramètre par des méthodes explicites](/fr/replace-parameter-with-explicit-methods.md)
- [Introduire un objet Null](/fr/introduce-null-object.md)


## Detected by

- **sonar** `S1479` — "switch" statements should not have too many "case" clauses (https://rules.sonarsource.com/java/RSPEC-1479/)
- **eslint** `sonarjs/max-switch-cases` — "switch" statements should not have too many "case" clauses (https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/max-switch-cases.md)
