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


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

== Noncompliant Code Example

----
def foo(n, m)
  case n
  when 0
      case m  # Noncompliant; nested case
      when 0 then puts "0"
        # ...
      end
  when 1 then puts "1"
  else puts "2"
  end
end
----

== Compliant Solution

----
def foo(n, m)
  case n
  when 0
    bar(m)
  when 1 then puts "1"
  else puts "2"
  end
end

def bar(m)
  case m
  when 0 then puts "0"
    # ...
  end
end
----

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

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