以下 java 代码给出了相当高的圈复杂度。我想找到一种适当减少它的方法。我将如何最好地做到这一点?
需要明确的是,代码根据值是否在两个限制之间来获取值的相应结果。该值本身可以是 -10000 到 +200000 之间的任何整数。问题主要出在“小于或等于”运算符上,这妨碍了库的简单使用。两个限制之间的范围可以不同,我们所说的范围是 10000 秒,一个示例间隔是 [<0...10000....25000...32500...]。范围是相当随意的数字,由业务决定。
您可以假设 LIMIT 值是常量,在类的开头定义。设置的结果值也是如此。将它们从常量更改为其他值是可能的。
有任何想法吗?
private int function getBasedOnInterval(int value){
int result;
if(value <= 0){
result = RESULT1;
}else if(value <= LIMIT1){
result = RESULT2;
}else if(value <= LIMIT2){
result = RESULT3;
}else if(value <= LIMIT3){
result = RESULT4;
}else if(value <= LIMIT4){
result = RESULT5;
}else if(value <= LIMIT5){
result = RESULT6;
}else if(value <= LIMIT6){
result = RESULT7;
}else if(value <= LIMIT7){
result = RESULT8;
}else if(value <= LIMIT8){
result = RESULT9;
}else if(value <= LIMIT9){
result = RESULT10;
}else if(value <= LIMIT10){
result = RESULT11;
}else if(value <= LIMIT11){
result = RESULT12;
}else if(value <= LIMIT12){
result = RESULT13;
}else if(value <= LIMIT13){
result = RESULT14;
}else{
result = RESULT15;
}
return result;
}