我有以下代码:
Pattern p1 = Pattern.compile("foo1");
Pattern p2 = Pattern.compile("foo2");
Pattern p3 = Pattern.compile("foo3");
Pattern p4 = Pattern.compile("foo4");
Pattern p5 = Pattern.compile("foo5");
if (p1.matcher(kvTarif.getkey()).matches() || p2.matcher(getkey()).matches() ||
p3.matcher(getkey()).matches() || p4.matcher(getkey()).matches() ||
p5.matcher(getkey()).matches())
checkstyle表示布尔复杂度为4(允许的最大值为3)。
如何降低复杂性?
答案 0 :(得分:5)
根据您匹配的逻辑,您可以将模式数量减少到2:
Pattern p1 = Pattern.compile("foo1");
Pattern p2 = Pattern.compile("foo2|foo3|foo4|foo5"); // match foo2 through foo5
if (p1.matcher(kvTarif.getkey()).matches() || p2.matcher(getkey()).matches()) {
// handle this case
}
正如用户@JonnyHenly所提到的,你可以使用它来简化第二种模式:
Pattern p2 = Pattern.compile("foo[2-5]");