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');} } } ----