我们有一些简短的方法,可以将某些值从一个域转换为另一个域,例如,通常有一个巨大的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上有一些规则可以建议这样做吗?