Ci-*_*son 5 java cyclomatic-complexity
我有一个代码块,我有一个问题,减少了圈复杂度.由于必须匹配的多个条件,我不确定进一步分解它的最佳方法.使问题复杂化的是,在2个案例中创建了一个新对象,但在第三个案例中却没有(它调用另一个方法).这是伪代码:
if (!cond3 && !cond1 && cond2 && cond4) {
// actions to perform
calculateValues();
return result;
} else if (!cond1 && cond2 && cond3) {
// actions to perform
Object result = new Result();
return result;
} else if (!cond4 && cond3 && cond1 && cond5) {
// actions to perform
Object result = new Result();
return result;
} else {
// throw error because inputs are invalid
}
Run Code Online (Sandbox Code Playgroud)
您应该重构该代码,使用方法来抽象这些条件,高圈数表明代码需要重构.例如,假设:!cond4 && cond3 && cond1 && cond5测试记录的用户是否有汽车,那么您应该将这些条件组合重构为方法:
private boolean loggedUserHasCar() {
return !cond4 && cond3 && cond1 && cond5;
}
Run Code Online (Sandbox Code Playgroud)
对其他条件做同样的事情.if有4个条件的陈述很难读.提取这些语句将减少您的方法圈复杂度并使您的代码更具可读性