Логотип ConstructiCat
CodeBust.
Навигация по разделу ▾

Операторы switch.

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

##Признаки и симптомы

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

double pay(Employee e) {
  switch (e.type) {
    case "engineer": return e.salary;
    case "manager": return e.salary + e.bonus;
    case "intern": return e.salary / 2;
    default: throw new IllegalArgumentException(e.type);
  }
}

##Причины проблемы

Одним из очевидных признаков объектно-ориентированного кода служит сравнительно редкое использование операторов типа switch или case. Часто один и тот же блок switch оказывается разбросанным по разным местам программы. При добавлении в него нового варианта приходится искать все эти блоки switch и модифицировать их.

Как правило, заметив блок switch, следует подумать о полиморфизме.

##Лечение

##Результат

  • Улучшает организацию кода.