用于简化条件算法的 Intellij 检查规则
Intellij inspection rule to simplify conditional algorithms
我们有一些简短的方法可以将一些值从一个域转换到另一个域,它通常有一个巨大的 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
块,而不是将值分配给最终将 returned 的变量,我将 return 放入条件本身,生成以下代码:
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 上有一些规则建议这样做吗?
您可以使用“移动 return 更接近值的计算..” quick-fix of 'return' separated from the result computation inspection(Java | Code style issues | 'return' separated from the result computation),然后应用“remove redundant 'else'" quick-fixes 的 冗余 'else' 检查(Java | 控制流问题 | 冗余 'else')。
我们有一些简短的方法可以将一些值从一个域转换到另一个域,它通常有一个巨大的 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
块,而不是将值分配给最终将 returned 的变量,我将 return 放入条件本身,生成以下代码:
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 上有一些规则建议这样做吗?
您可以使用“移动 return 更接近值的计算..” quick-fix of 'return' separated from the result computation inspection(Java | Code style issues | 'return' separated from the result computation),然后应用“remove redundant 'else'" quick-fixes 的 冗余 'else' 检查(Java | 控制流问题 | 冗余 'else')。