The switch statement should be used only to clearly define some new branches in the control flow. As soon as a case 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 method.

Noncompliant Code Example

With the default threshold of 5:

func foo(tag int) {
	switch tag {
	case 0:
		methodCall1()
		methodCall2()
		methodCall3()
		methodCall4()
                methodCall5()
                methodCall6()
	case 1:
		bar()
	}
}

Compliant Solution

func foo(tag int) {
	switch tag {
	case 0:
		executeAll()
	case 1:
		bar()
	}
}

func executeAll() {
	methodCall1()
	methodCall2()
	methodCall3()
	methodCall4()
        methodCall5()
        methodCall6()
}