假设有一个包含 n 个条件的“if 语句”:
if (a == b || x == '0' || z == '1' .... || s == 'e') { // < n conditions
result = do_something();
}
可以重写如下:
switch (??) {
case a == b:
case x == '0':
case z == '1';
...
case s == 'e':
result = do_something();
break;
default:
break;
}
与用 OR/AND 运算符分隔的多个条件相比,它感觉更具可读性,并且不那么麻烦。如果需要添加另一个条件,那么我们可以添加另一个案例。
这可能吗?如果是,请分享一个实现。
或
原始的“if 语句”本身是否是错误编码的结果,因此应该被视为整个代码需要重新审视和改进的暗示?
最佳答案
简短的回答是不,你不能,而且你也不应该。 您可以简单地以一种很好的方式格式化它:
if (a == b
|| x == '0'
|| (z == '1' && a == 'e')
|| s == 'e') {
result = do_something();
}
长的答案是你可以,但会很困惑且不清楚!
在 Java(和大多数其他语言)中,switch 用于“切换”enumeration 。所以你不能用像x == b
这样的 boolean 表达式进行切换。即使像这样简单的事情也行不通:
//NOT REAL JAVA CODE
switch (true) {
case true:
Sytem.out.println("true");
break;
case false:
Sytem.out.println("false");
break;
}
所以剩下的唯一方法就是创建一个代表性枚举......对于我能想到的所有情况来说这都是一个坏主意。
如果 if 确实升级,请考虑以下简化想法
- 发表更多评论
- 改用循环
- 使用更多的 If 来代替
- 使用真值表来简化 if
关于java - 简化 Java IF-ELSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63645785/