2.5 KiB
#рефакторинг #запахи_кода
Инструкция switch — вовсе не красный флаг. Когда одна и та же условная логика (либо в switch/case, либо в каскаде if/else) появляется в разных местах, проблема состоит в том, что всякий раз, когда вы добавляете ветвь, вы должны найти все инструкции switch и обновить их. Полиморфизм обеспечивает элегантное оружие против темных сил такого повторения.
Признаки
- У вас есть сложный оператор
switchили последовательностьif-ов
Причины появления
Одним из очевидных признаков объектно-ориентированного кода служит сравнительно редкое использование операторов типа switch или case. Часто один и тот же блок switch оказывается разбросанным по разным местам программы. При добавлении в него нового варианта приходится искать все эти блоки switch и модифицировать их. Как правило, заметив блок switch, следует подумать о полиморфизме.
Рефакторинги
Результат
- Улучшает организацию кода
Не стоит трогать, если...
- Когда оператор
switchвыполняет простые действия, нет никакого смысла что-то менять в коде - Зачастую оператор switch используется в фабричных паттернах проектирования (Фабричный метод, Абстрактная фабрика) для выбора создаваемого класса.

