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

Причины появления
Одним из очевидных признаков объектно-ориентированного кода служит сравнительно редкое использование операторов типа switch или case. Часто один и тот же блок switch оказывается разбросанным по разным местам программы. При добавлении в него нового варианта приходится искать все эти блоки switch и модифицировать их.
Как правило, заметив блок switch, следует подумать о полиморфизме.
Лечение
-
Чтобы изолировать
switchи поместить его в нужный класс может понадобиться извлечение метода и перемещение метода. -
Если
switchпереключается по коду типа, например, переключается режим выполнения программы, то следует использовать замену кодирования типа подклассами или замену кодирования типа состоянием/стратегией. -
После настройки структуры наследования следует использовать замену условного оператора полиморфизмом.
-
Если вариантов в операторе не очень много и все они приводят к вызову одного и того же метода с разными параметрами, введение полиморфизма будет избыточным. В этом случае стоит задуматься о разбиении этого метода на несколько разных, которые будут выполнять каждый свои функции, для чего нужно применить замену параметра набором специализированных методов.
-
Если одним из вариантов условного оператора является
null, используйте введение Null-объекта.
Выигрыш
- Улучшает организацию кода.

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