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("");
}
----

ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
