大量switch,case怎么优化?

事情是这样的,前两天搞了一个代码运用了五十几个switch,case,搞完发现这个代码又臭又长,所以想优化一下。

代码逻辑是这样的 case x: sendbyte (); break; 最多就是加个Flag 或者判断Flag,有判断超过4个的已经封装成函数。
现在的问题就是代码的可读性很直观,但是又臭又长,case的数据是跳变的,用枚举的话需要3~5个枚举再加一个不少case的switch才能实现,不知道各位有什么好的方法可以在既不失去可读性的情况下(可以稍微降低),又能优化代码

你的50多个分支就没有任何一点相似的地方吗
其实很多分支条件可以合并,写成一句公式
比如凯撒密码,你写成52个分支,A变B,a变b,也是能写的,但是其实ascii码+1就行了

可以试试用函数指针数组。示例:

void f1();
void f2();
...
swicth(x){
    case 1:
        f1();
        break;
    case 2;
        f2();
        break;
}

可以改为

void f1();
void f2();
void (*functions[])()={f1,f2};
...
function[x-1]();

具体要看你的case处理逻辑才能判断如何优化