40 lines
790 B
Plaintext
40 lines
790 B
Plaintext
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
|
|
----
|