The switch
statement should be used only to clearly define some new branches in the control flow. As soon as a case
clause contains too many statements this highly decreases the readability of the overall control flow statement. In such case, the content of
case
clause should be extracted in a dedicated function.
Noncompliant code example
With the default threshold of 5:
switch (myVariable) {
case 0: // 6 lines till next case
methodCall1("");
methodCall2("");
methodCall3("");
methodCall4("");
methodCall5("");
break;
case 1:
// ...
}
Compliant solution
switch (myVariable) {
case 0: // Compliant: 2 lines
doSomething();
break;
case 1: // Compliant: 5 lines till next case. Curly braces after a case are not counted if they contain the entire case body
{
methodCall1("");
methodCall2("");
methodCall3("");
methodCall4("");
break;
}
case 2:
// ...
}
// ...
void doSomething(){
methodCall1("");
methodCall2("");
methodCall3("");
methodCall4("");
methodCall5("");
}