用于简化条件算法的 Intellij 检查规则

我们有一些简短的方法可以将一些值从一个域转换到另一个域,它通常有一个switch或多个巨大的块ifs,例如:


private DomainB translateSomething(final DomainA data) {

    DomainB result = null;

    if (data != null) {

            if (CONSTANT_A_VALUE_X.equals(data)) {

                result = CONSTANT_B_VALUE_X;

            } else if (CONSTANT_A_VALUE_Y.equals(data)) {

                result = CONSTANT_B_VALUE_Y;

            } else if (CONSTANT_A_VALUE_Z.equals(data)) {

                result = CONSTANT_B_VALUE_Z;

            } else {

                result = CONSTANT_B_VALUE_W;

            }

    }

    return result;

}

它可能是一个switch而不是if,或者每个结果可以有多个条件,甚至可以在方法参数上接收多个域以帮助确定一个结果,这就是为什么它不能是地图的原因。


当我看到这个时,我在第一个条件上应用了短路,并删除了所有else块,而不是将值分配给最终将返回的变量,我将返回放在条件本身内,产生以下代码:


private DomainB translateSomething(final DomainA data) {

    if (data == null) {

        return null;

    }

    if (CONSTANT_A_VALUE_X.equals(data)) {

        return CONSTANT_B_VALUE_X;

    }

    if (CONSTANT_A_VALUE_Y.equals(data)) {

        return CONSTANT_B_VALUE_Y;

    }

    if (CONSTANT_A_VALUE_Z.equals(data)) {

        return CONSTANT_B_VALUE_Z;

    }

    return CONSTANT_B_VALUE_W;

}

我已经厌倦了几次,我知道 IntelliJ 在检查规则方面有很大帮助,IntelliJ 上是否有一些规则暗示了这一点?


慕沐林林
浏览 83回答 1
1回答

慕的地6264312

您可以使用“将返回更接近值的计算.. ”快速修复“返回”与结果计算检查分开(Java |代码风格问题|“返回”与结果计算分开),然后应用“删除冗余'else' ”冗余 'else'检查的快速修复(Java | 控制流问题 | 冗余 'else')。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java