java - 太多的 if-else 语句,有什么方法可以重构它

标签 java refactoring

这可以重构吗?或者这看起来不错。 (变量名称已更改)

if (cmpScope.equals(GLOBAL)) {
            return true;
        } else if ((cmpScope.equals(X) || cmpScope.equals(Y))
                && cid == pid) {
            return true;
        } else if (cmpScope.equals(Z) && cid != pId) {
            return true;
        } else if (cmpScope.equals(V) && cid == pid) {
            return true;
        } else if (cmpScope.equals(Z) && cid == pid && cSubId != pSubId) {
            return true;
        }
        return false;

最佳答案

只需将所有表达式与 or-operators 结合起来,因为它们都返回 true。

return  ((cmpScope.equals(GLOBAL) ||
         ((cmpScope.equals(X) || cmpScope.equals(Y)) && cid == pid) ||
         (cmpScope.equals(Z) && cid != pId) ||
         (cmpScope.equals(V) && cid == pid) ||
         (cmpScope.equals(Z) && cid == pid && cSubId != pSubId));

关于java - 太多的 if-else 语句,有什么方法可以重构它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33689623/

相关文章:

java - Eclipse 实时管理

java - geotools 20.5错误:无法实例化提供者org.geotools.referencing.factory.epsg.CartesianAuthorityFactory

java - intellij 已经引入常量是私有(private)的而不是公共(public)的

c# - 用 continue 重构 foreach 循环?

c# - 将公共(public)方法重构到另一个类

java - 如何使用 JFileChooser.showOpenDialog 打开特定文件?

java - Accumulo BatchWriter close() 永远卡住了

java - 我怎样才能减少这个的圈复杂度?

javascript - html下载Java

java - 如何对同一类型的 Checkstyle 问题应用多个快速修复?