看见长串的switch-case,而且里面基本没有处理什么的,就浑身不舒服。但是项目长年累月,这个代码是不让动了,就让我吐槽下吧。
switch-case大致分为以下几种(根本原因也就一种)
1、case某个消息ID,发往的模块ID=X;
这个看起来清爽,基本实际情况是:
case某个消息ID
case某个消息ID
case某个消息ID
case某个消息ID
case某个消息ID
case某个消息ID
case某个消息ID
case某个消息ID
case某个消息ID
case某个消息ID,
发往的模块ID=X;
叹气,我一同事要添加12个ID,崩溃的问我,switch-case能不能有范围?
其实某个ID发往某个模块,模块ID都是确定的,完全可以写入map,或者数组,还不费事。
2、case某个ID,调用某个函数(C函数)。
3、花哨点,将case弄成宏,宏里面是模板,模板用消息ID实例化模板。--明显的过度使用模板嘛!
唯一的不同时函数的传参不同。
回来的路上,我就想,怎样简单方便的将这些函数装入map。暂时没找到方法。
不过,乖乖,你的分发函数的传参不是都一样的吗?多余的函数谁整出来的?还不就是通过这个分发函数的传参。那些函数明明可以让传参相同的嘛。
--------------------------------------------------------------------------------------------------------
不过,有什么办法,可以简单的通过消息ID立马就找到某个参数不同的函数呢?