Следуя тому, что написал Стив Фэллоуз, после того, как вы пройдете модульное тестирование, убедитесь, что функциональность действительно изменилась, создайте новую функцию и проведите те же модульные тесты, что и оригинальная работа с ней.
В настоящий момент все они потерпят неудачу.
Затем начните извлекать каждый оператор case и помещать его в свою собственную функцию, а затем вызывать его из новой функции, так что в итоге вы получите функцию с одним переключателем, а каждый случай просто вызывает функцию.
После того, как все функциональные возможности перемещены, вы можете посмотреть, нужно ли вам реорганизовать какие-либо другие функции, но начните с модульного теста, чтобы убедиться, что функциональность не потеряна.
Каждая из новых функций также должна иметь свои собственные модульные тесты, кстати.