Следующий код java дает довольно высокую Cyclomatic Complexity. Я хотел бы найти способ правильно его уменьшить. Как мне это лучше всего сделать?Сокращающая цикломатическая сложность с интервалом
Чтобы быть ясным, код получает соответствующий результат от значения, исходя из того, находится ли значение между двумя пределами. Само значение может быть любым целым числом от -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;
}
Не могли бы вы привести некоторые значения? LIMITxx через определенные промежутки времени? они случайны? – Craig