Я видел, как в нескольких потоках / комментариях к stackoverflow написано, что использование switch
- просто плохой стиль ООП. Лично я с этим не согласен.
Во многих случаях вы не можете добавить код (то есть методы) к enum
классам, которые хотите включить, потому что вы ими не управляете, возможно, они находятся в стороннем jar-файле. Будут и другие случаи, когда использование функциональности для самого перечисления является плохой идеей, поскольку она нарушает некоторые соображения разделения проблем или фактически является функцией чего-то другого , а также перечисление .
Наконец, переключатели лаконичны и понятны:
boolean investable;
switch (customer.getCategory()) {
case SUB_PRIME:
case MID_PRIME:
investible = customer.getSavingsAccount().getBalance() > 1e6; break;
case PRIME:
investible = customer.isCeo(); break;
}
Я не защищаю каждое использование switch
, и я не говорю, что всегда есть путь. Но такие утверждения, как «Переключатель - это запах кода», на мой взгляд, просто неверны. Кто-нибудь еще согласен?