---
title: "Операторы switch"
type: "code-smell"
slug: "switch-statements"
url: "http://localhost:3000/ru/smells/switch-statements.md"
category: "Нарушители объектно-ориентированного дизайна"
description: "У вас есть сложный оператор switch или последовательность if-ов."
---
# Операторы switch

> У вас есть сложный оператор switch или последовательность if-ов.

## Signs and Symptoms

У вас есть сложный оператор `switch` или последовательность `if`\-ов.

## Reasons for the Problem

Одним из очевидных признаков объектно-ориентированного кода служит сравнительно редкое использование операторов типа `switch` или `case`. Часто один и тот же блок `switch` оказывается разбросанным по разным местам программы. При добавлении в него нового варианта приходится искать все эти блоки `switch` и модифицировать их.

Как правило, заметив блок `switch`, следует подумать о полиморфизме.

## Payoff

* Улучшает организацию кода.
## Relations

**Treated by**

- [Извлечение метода](/ru/extract-method.md)
- [Перемещение метода](/ru/move-method.md)
- [Замена кодирования типа подклассами](/ru/replace-type-code-with-subclasses.md)
- [Замена кодирования типа состоянием/стратегией](/ru/replace-type-code-with-state-strategy.md)
- [Замена условного оператора полиморфизмом](/ru/replace-conditional-with-polymorphism.md)
- [Замена параметра набором специализированных методов](/ru/replace-parameter-with-explicit-methods.md)
- [Введение Null-объекта](/ru/introduce-null-object.md)

