系统的策略代码
10多个特征,几百行的 if else (python写的)
维护和升级起来很麻烦
各位有什么好的解决办法
拆分功能,switch,基本上拆分功能是比较实际的
分析判断的代码,找出可以从大的if else 中分离出来的判断 然后 用switch 或者把某些判断提取到方法中
不熟悉Python,不知道有没有C#中Dictionary<string,Action<string>>,或者Js中var fs={f1:function(){},f2:function(){}}类似的结构,这样的话就能判断干掉一部分了。
不熟悉py,用c#讲解下。
如果判断条件是int型,且较连续,用switch。
其他可以用上面回复中的字典解决。
楼主可以参考工厂模式,条件分支判断多不可怕,可怕的是大量重复性的代码。
另外,如果输入有特别的特征且性能要求不是十分高的话,可以考虑用反射简化。
switch(条件)
{
case "条件1":
//逻辑处理
break;
case "条件2":
//逻辑处理
break:
default:
break;
}
用策略模式试试,它省略If else 的依据就是你明确知道自己要调用哪个策略,如果不知道,那可以用键值对,反射来获得策略(替代if else)
很复杂的逻辑判断 可以先分大类 提取出单独的方法 然后再分更细的类别.
还可以用 decision table 作辅助