首页新闻找找看学习计划

if else 代码优化

0
悬赏园豆:50 [已关闭问题] 关闭于 2014-05-16 09:19

系统的策略代码

10多个特征,几百行的 if else (python写的)

维护和升级起来很麻烦

 

各位有什么好的解决办法

NashZhou的主页 NashZhou | 初学一级 | 园豆:40
提问于:2014-05-13 11:11
< >
分享
所有回答(8)
0

拆分功能,switch,基本上拆分功能是比较实际的

吴瑞祥 | 园豆:28675 (高人七级) | 2014-05-13 11:50
0

分析判断的代码,找出可以从大的if else 中分离出来的判断 然后 用switch  或者把某些判断提取到方法中

Zery | 园豆:6066 (大侠五级) | 2014-05-13 12:27
0

不熟悉Python,不知道有没有C#中Dictionary<string,Action<string>>,或者Js中var fs={f1:function(){},f2:function(){}}类似的结构,这样的话就能判断干掉一部分了。

幻天芒 | 园豆:36522 (高人七级) | 2014-05-13 12:41
0

用委托或者lamada来解决

````` | 园豆:14268 (专家六级) | 2014-05-13 13:28
0

不熟悉py,用c#讲解下。

如果判断条件是int型,且较连续,用switch。

其他可以用上面回复中的字典解决。

楼主可以参考工厂模式,条件分支判断多不可怕,可怕的是大量重复性的代码。

 

另外,如果输入有特别的特征且性能要求不是十分高的话,可以考虑用反射简化。

h82258652 | 园豆:293 (菜鸟二级) | 2014-05-13 14:31
0

switch(条件)

{

case "条件1":

//逻辑处理

break;

case "条件2":

//逻辑处理

break:

default:

break;

}

sunlary | 园豆:934 (小虾三级) | 2014-05-13 14:45
0

用策略模式试试,它省略If else 的依据就是你明确知道自己要调用哪个策略,如果不知道,那可以用键值对,反射来获得策略(替代if else)

happydaily | 园豆:581 (小虾三级) | 2014-05-13 15:12
0

很复杂的逻辑判断  可以先分大类  提取出单独的方法  然后再分更细的类别.

还可以用 decision table 作辅助

gunsmoke | 园豆:3592 (老鸟四级) | 2014-05-15 11:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册