java:S1067 - 减少表达式中使用的条件运算符的数量 (5)(最多允许 3 个)
java:S1067 - Reduce the number of conditional operators (5) used in the expression (maximum allowed 3)
如何减少条件运算符的数量?
声纳显示主要问题,例如减少表达式中使用的条件运算符 (5) 的数量(最多允许 3 个),但所有条件都必须保留在此块中:
private String processfromOrigin(Object value) {
if ((value instanceof A) || (value instanceof B)
|| (value instanceof C) || (value instanceof D)
|| (value instanceof E)
|| (value instanceof F)) {
return ((baseDto) processo).getProcess();
} else if (value instanceof G) {
return ((G) value ).getProcess();
} else if (value instanceof H) {
return ((H) value ).getProcess();
} else {
return (String) value ;
}
}
您可以使用如下代码来简化 if 块中的第一个条件:
import static java.util.Stream.of;
boolean checkABCDEF = of(A.class, B.class, C.class, D.class, E.class, F.class).
anyMatch(aClass -> aClass.isInstance(value))
的,可以封装在本地方法中:
private boolean isABCDEF(Object x) {
return Stream.of(A.class, B.class, C.class, D.class, E.class, F.class).
anyMatch(aClass -> aClass.isInstance(x));
}
如何减少条件运算符的数量? 声纳显示主要问题,例如减少表达式中使用的条件运算符 (5) 的数量(最多允许 3 个),但所有条件都必须保留在此块中:
private String processfromOrigin(Object value) {
if ((value instanceof A) || (value instanceof B)
|| (value instanceof C) || (value instanceof D)
|| (value instanceof E)
|| (value instanceof F)) {
return ((baseDto) processo).getProcess();
} else if (value instanceof G) {
return ((G) value ).getProcess();
} else if (value instanceof H) {
return ((H) value ).getProcess();
} else {
return (String) value ;
}
}
您可以使用如下代码来简化 if 块中的第一个条件:
import static java.util.Stream.of;
boolean checkABCDEF = of(A.class, B.class, C.class, D.class, E.class, F.class).
anyMatch(aClass -> aClass.isInstance(value))
的,可以封装在本地方法中:
private boolean isABCDEF(Object x) {
return Stream.of(A.class, B.class, C.class, D.class, E.class, F.class).
anyMatch(aClass -> aClass.isInstance(x));
}