java - 简化 Java IF-ELSE

标签 java if-statement switch-statement

假设有一个包含 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/

相关文章:

java - Android 斐波那契基准/深度递归

java - 过滤延迟初始化的 Hibernate 集合

java - Android webview - 网页以非常糟糕的方式呈现

python - 如何替换Python中的多个if循环?

Javascript - 获取 switch case 中的 case 数量

java - 编写一个程序,提示用户输入两点(包括工作)

c# - 分析 if 语句以实现性能优化

java - 这个 if else 语句有问题吗?

带通配符的 JavaScript switch 语句?

Objective-C:如何在 switch 语句完成后返回到应用程序的开头