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
.
if ("red".equals(choice)) { // Noncompliant dispenseRed(); } else if ("blue".equals(choice)) { dispenseBlue(); } else if ("yellow".equals(choice)) { dispenseYellow(); } else { promptUser(); }
switch(choice) { case "Red": dispenseRed(); break; case "Blue": dispenseBlue(): break; case "Yellow": dispenseYellow(); break; default: promptUser(); break; }