The case statement should be used only to clearly define some new branches in the control flow. As soon as a when clause contains too many statements this highly decreases the readability of the overall control flow statement. In such case, the content of the case clause should be extracted into a dedicated function.

Noncompliant Code Example

With the threshold set at 5:

case myVariable
when 0 then # Noncompliant: 6 lines till next "when"
    methodCall1("")
    methodCall2("")
    methodCall3("")
    methodCall4("")
    methodCall5("")
    methodCall6("")
when 1
   # ...
end

Compliant Solution

case myVariable
when 0 then
  doSomething()
when 1
   # ...
end
...
def doSomething()
    methodCall1("")
    methodCall2("")
    methodCall3("")
    methodCall4("")
    methodCall5("")
    methodCall6("")
end