---
title: "Sentencias switch"
type: "code-smell"
slug: "switch-statements"
url: "http://localhost:3000/es/smells/switch-statements.md"
category: "Object-Orientation Abusers"
description: "Tienes un operador switch complejo o una secuencia de sentencias if."
---
# Sentencias switch

> Tienes un operador switch complejo o una secuencia de sentencias if.

## Signs and Symptoms

Tienes un operador `switch` complejo o una secuencia de sentencias `if`.

## Reasons for the Problem

El uso relativamente infrecuente de los operadores `switch` y `case` es uno de los rasgos distintivos del código orientado a objetos. A menudo, el código de un único `switch` puede estar disperso en diferentes lugares del programa. Cuando se añade una nueva condición, tienes que encontrar todo el código `switch` y modificarlo.

Como regla general, cuando veas un `switch` deberías pensar en polimorfismo.

## Payoff

* Mejor organización del código.
## Relations

**Treated by**

- [Extraer método](/es/extract-method.md)
- [Mover método](/es/move-method.md)
- [Reemplazar código de tipo con subclases](/es/replace-type-code-with-subclasses.md)
- [Reemplazar código de tipo con estado/estrategia](/es/replace-type-code-with-state-strategy.md)
- [Reemplazar condicional con polimorfismo](/es/replace-conditional-with-polymorphism.md)
- [Reemplazar Parámetro con Métodos Explícitos](/es/replace-parameter-with-explicit-methods.md)
- [Introducir objeto nulo](/es/introduce-null-object.md)


## Detected by

- **sonar** `S1479` — Las sentencias "switch" no deberían tener demasiadas cláusulas "case" (https://rules.sonarsource.com/java/RSPEC-1479/)
- **eslint** `sonarjs/max-switch-cases` — Las sentencias "switch" no deberían tener demasiadas cláusulas "case" (https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/max-switch-cases.md)
