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


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

== Noncompliant Code Example

----
public void foo(Integer i, Integer j) {
  switch on i {
    when 1 {System.debug(' 1'); }
    when 2 { System.debug(' 2'); }
    when -3 {
      switch on j {  // Noncompliant
        when 1 {System.debug(' 3');}
        when else {System.debug(' 4');}
      }
    }
  }
}
----

== Compliant Solution

----
public void foo(Integer i, Integer j) {
  switch on i {
    when 1 {System.debug(' 1'); }
    when 2 { System.debug(' 2'); }
    when -3 {bar(j);}
  }
}

public void bar(Integer j) {
  switch on j {
    when 1 {System.debug(' 3');}
    when else {System.debug(' 4');}
  }
}
----

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[]
