I have to write a lot of conditions, but SonarLint is giving me error, asking to refactor the method to reduce its cognitive complexity.
How to resolve this. I tried switch
-case, but that is also giving the same error.
public enum ExampleEnum {
UNKNOWN(-1),
D0_D100(0),
D100_D200(100),
D200_D300(200),
D300_D400(300),
D400_D500(400),
D500_D600(500),
D600_D700(600),
D700_D800(700),
D800_D900(800),
D900_D1000(900);
private int score;
ExampleEnum(int score) {
this.score = score;
}
}
public static ExampleEnum getScoreType(Integer score) {
if (Objects.isNull(score) || score < D0_D100.score) {
return UNKNOWN;
} else if (score >= D0_D100.score && score < D100_D200.score) {
return D0_D100;
} else if (score >= D100_D200.score && score < D200_D300.score) {
return D100_D200;
} else if (score >= D200_D300.score && score < D300_D400.score) {
return D200_D300;
} else if (score >= D300_D400.score && score < D400_D500.score) {
return D300_D400;
} else if (score >= D400_D500.score && score < D500_D600.score) {
return D400_D500;
} else if (score >= D500_D600.score && score < D600_D700.score) {
return D500_D600;
} else if (score >= D600_D700.score && score < D700_D800.score) {
return D600_D700;
} else if (score >= D700_D800.score && score < D800_D900.score) {
return D700_D800;
} else if (score >= D800_D900.score && score < D900_D1000.score) {
return D800_D900;
} else {
return D900_D1000;
}
}