Обзор темы [Рефакторинг кода]

Операторы выбора (Switch Statements)

Отличительный признак хорошей объектно-ориентированной программы – относительно небольшое количество операторов выбора. Основная проблема с этими операторами в дублирующемся коде: если такие операторы разбросаны по всей программе, и добавляется новый вариант выбора, то надо найти все эти операторы и изменить их. Полиморфизм предоставляет красивый выход из этой ситуации.

В большинстве случаев, когда возникает оператор выбора, надо рассматривать применение полиморфизма.

Если оператор основан на кодировании типа, и нужен класс, который будет соответствовать определенному значению – тогда применяется Извлечение метода, чтобы вынести этот оператор, и Перемещение метода для помещения его в класс, где требуется полиморфизм. Здесь надо выбрать между Заменой кодирования типа подклассами и Заменой кодирования типа состоянием/стратегией. Когда структура наследования будет установлена, можно использовать Замену условия полиморфизмом.

Если же имеется немного альтернатив, влияющих на один метод, и изменения не ожидаются, то полиморфизм излишен. В этом случае надо использовать Замену параметра набором методов. Если среди возможных альтернатив есть NULL, то надо использовать Введение NULL объекта.