Since Java 7, String
s can be used as switch
arguments. So when a single String
is tested against three or
more values in an if
/else if
structure, it should be converted to a switch instead for greater readability.
Note that this rule is automatically disabled when the project’s sonar.java.source
is lower than 7
.
Noncompliant code example
if ("red".equals(choice)) { // Noncompliant
dispenseRed();
} else if ("blue".equals(choice)) {
dispenseBlue();
} else if ("yellow".equals(choice)) {
dispenseYellow();
} else {
promptUser();
}
Compliant solution
switch(choice) {
case "Red":
dispenseRed();
break;
case "Blue":
dispenseBlue():
break;
case "Yellow":
dispenseYellow();
break;
default:
promptUser();
break;
}