switch重构
软件要接受一个信号,每接受一次要进行不同的处理,接受次数也不好确定。我用switch语句,但case太多,函数太长。请问怎样重构,用什么样的方法比较好?
[解决办法]
把 函数 存到一个 数组。
按 索引 调用函数。
[解决办法]
楼上让人很开阔思路,学习了。
[解决办法]
类似消息映射的方法
[解决办法]
能有多少
回比windows的消息还多么
[解决办法]
个人感觉把函数压到数组或容器中跟直接case没有区别。
[解决办法]
例子:
typedef void (*MYPROC)();
// 函数:
void fun1(void){};
void fun2(void){};
void fun3(void){};
// 数组:
MYPROC AllFunc[3]={fun1,fun2,fun3};
// 调用:
AllFunc[0]();
[解决办法]
直接用原生态switch-case效率最高
完全没有必要做什么所为优化
我觉得就算你做出来了也只能是程序效率下降
维护复杂
[解决办法]
还是switch吧,就算折腾出了,还不一定就比switch 好
而且switch维护起来更方便,更不容易出BUG
[解决办法]
可以参考 行为树 behavior tree
[解决办法]
其实用函数数组 有它自己的 问题:
看到:
typedef void (*MYPROC)();
这句了吧!
它要求 所有的 函数 有 一样的 返回值,一样的 参数 !
这个要求,是太严格了 !