Оператори switch
Симптоми і ознаки
У вас є складний оператор switch
або послідовність if
-ів.

Причини появи
Однією з очевидних ознак об’єктно-орієнтованого коду служить порівняно рідкісне використання операторів типу switch
або case
. Часто один і той же блок switch
виявляється розкиданим по різних місцях програми. При додаванні в нього нового варіанту доводиться шукати всі ці блоки switch
і модифікувати їх.
Як правило, помітивши блок switch
, слід подумати про поліморфізм.
Лікування
Щоб ізолювати
switch
і помістити його в потрібний клас може знадобитися відокремлення методу і переміщення методу.Якщо
switch
перемикається за допомогою коду типу, наприклад, перемикається режим виконання програми, то слід використати заміну кодування типу підкласами або заміну кодування типу станом/стратегією.Після налаштування структури наслідування слід використати заміну умовного оператора поліморфізмом.
Якщо варіантів в операторі не дуже багато і всі вони призводять до виклику одного й того ж методу з різними параметрами, то введення поліморфізму буде надмірним. В цьому випадку варто замислитися про розбиття цього методу на декілька різних, які виконуватимуть кожен свої функції, для чого треба застосувати заміну параметра набором спеціалізованих методів.
Якщо одним з варіантів умовного оператора є
null
, використайте введення Null-об’єкта.
Виграш
- Покращує організацію коду.

Не варто чіпати, якщо...
Коли оператор
switch
виконує прості дії, немає ніякого сенсу щось міняти в коді.Часто буває, що оператор
switch
використовується у фабричних патернах проектування (Фабричний метод, Абстрактна фабрика), для вибору створюваного класу.