有没有人不同意“使用switch是糟糕的OOP风格”的说法?
我已经看到它写在堆栈溢出的多个线程/评论中,使用它只是糟糕的OOP风格。就我个人而言,我不同意这一点。switch
在许多情况下,您无法将代码(即方法)添加到要打开的类中,因为您无法控制它们,也许它们位于第三方jar文件中。在其他情况下,将功能放在枚举本身上是一个坏主意,因为它违反了一些关注点分离的注意事项,或者它实际上是其他东西的功能以及枚举。enum
最后,开关简洁明了:
boolean investable;
switch (customer.getCategory()) {
case SUB_PRIME:
case MID_PRIME:
investible = customer.getSavingsAccount().getBalance() > 1e6; break;
case PRIME:
investible = customer.isCeo(); break;
}
我不是在为每一种用途辩护,我也不是说这总是要走的路。但是,在我看来,像“Switch是一种代码气味”这样的陈述是错误的。还有其他人同意吗?switch