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

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

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