Nested ``++switch++`` structures are difficult to understand because you can easily confuse the cases of an inner ``++switch++`` as belonging to an outer statement or expression. Therefore nested ``++switch++`` statements and expressions should be avoided.


Specifically, you should structure your code to avoid the need for nested ``++switch++`` statements or expressions, but if you cannot, then consider moving the inner ``++switch++`` to another method.

== Noncompliant Code Example

----
void foo(int n, int m) {
  switch (n) { 
    case 0:
      switch (m) {  // Noncompliant; nested switch
        // ...
      }
    case 1:
      // ...
    default:
      // ...
  }
}
----

== Compliant Solution

----
void foo(int n, int m) {
  switch (n) {
    case 0:
      bar(m);      
    case 1:
      // ...
    default:
      // ...
  }
}

void bar(int m){
  switch(m) {
    // ...
  }
}
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

'''
== Comments And Links
(visible only on this page)

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