积极答复者
为什么要尽可能少用if else

问题
-
看到很多国内论坛上很多人在讨论使用各种方法代替if else 逻辑,以前只是觉得用switch case代替一部分if else ,把处理的过程放在不同的函数里,这样逻辑结构显得清晰一点,但似乎没必要彻底不用if else吧,而且很多人贴同样的代码(估计是直接复制粘贴的,都没仔细看过),说是去掉了if else,但仔细研究一看,根本就是不对的,比如http://blog.csdn.net/yanhongsan/archive/2008/11/19/3335184.aspx里的例子,有一个根本的问题没解决,如何判断是使用CEvent1还是CEvent2,至于大量使用if else 的问题会导致结构不清晰的问题,我想只要里面没有复杂的业务逻辑,应该不存在结构不清晰的情况吧,通过if else if else 结构,分析出不同的情况,然后使用不同方法处理,在处理方法中,还可以使用更细的分支,只要有注释,顺着逻辑走下去,也没什么问题吧,相反,弄一堆对象来处理,虽然看起来if else 少了,但理解起来可能更麻烦了,不知道我说的对不对,欢迎对这方面有研究的朋友指正。
答案
-
您好,关于这方面的信息据我所知最早出现在Martin Flower的《重构-改善既有代码》中,在第9章简化条件表达式中有详细的介绍。
因为if等条件式的代码编写地方是复杂情况滋长的地方,所以《重构》中给出了应对各种复杂if条件的方案。
我个人是在开发框架中经常使用这些方案,以面向对象的设计模式来替代if,以获得框架的高可扩展性。
但话又说回来了,凡事无绝对。我认为如果if代码够简单,够清晰,if中判断的情况也不会经常发生变化,是没有必要去替换的。
设计模式中的思想也是为了应对未来不断发生的变化,如果其本身就不变化,其本身就简单,那又何必化简为繁。
仅供参考。
- 已标记为答案 Song TianModerator 2011年1月6日 7:48
全部回复
-
您好,关于这方面的信息据我所知最早出现在Martin Flower的《重构-改善既有代码》中,在第9章简化条件表达式中有详细的介绍。
因为if等条件式的代码编写地方是复杂情况滋长的地方,所以《重构》中给出了应对各种复杂if条件的方案。
我个人是在开发框架中经常使用这些方案,以面向对象的设计模式来替代if,以获得框架的高可扩展性。
但话又说回来了,凡事无绝对。我认为如果if代码够简单,够清晰,if中判断的情况也不会经常发生变化,是没有必要去替换的。
设计模式中的思想也是为了应对未来不断发生的变化,如果其本身就不变化,其本身就简单,那又何必化简为繁。
仅供参考。
- 已标记为答案 Song TianModerator 2011年1月6日 7:48