不要 if else 的编程

2013-11-27 09:25:32 +08:00
 barb
http://www.linuxeden.com/html/news/20131127/145900.html
高手们怎么看?
6584 次点击
所在节点    程序员
31 条回复
vibbow
2013-11-27 09:39:48 +08:00
不用if else,难道用switch?
GTim
2013-11-27 09:43:06 +08:00
每个语言都不同,不能一概而论
chchwy
2013-11-27 09:43:58 +08:00
很多 Design Pattern 的手法就是把 if-else 換成多態。
proudduck
2013-11-27 09:49:04 +08:00
我都干过把 if-else 换成反射来着。。。
vietor
2013-11-27 10:00:39 +08:00
if-else的性能还是非常好的,那些提到的替代算法:仅仅是为了浪费CPU而做的轮子。同时,那些算法的可读性,其实并不像他们想象的那样有提高,我认为是“下降”了。
hitsmaxft
2013-11-27 10:15:24 +08:00
if else 简洁高效

但是很方便写上N层, 不用考虑梳理业务, 导致代码无法维护, 这才是被诟病的原因. 说到底是程序员自己的问题. 代价太低, 啥水平的人都能上来添乱

把所有程序员偷懒的路子都堵上, 不见得是好事.
Golevka
2013-11-27 10:27:47 +08:00
奥卡姆剃刀
chmlai
2013-11-27 10:44:23 +08:00
就知道他要说用多态或者表带替代switch和if/else.
Mutoo
2013-11-27 11:15:47 +08:00
多态,NullObject 都是消除 if-else 的方法,可以让结构看起来清晰一些。

在《程序员的数学》里面有个例子,有个人要吃一个月的药,规则是单日吃,双日不吃,但是他经常记不起来今天是单日还是双日,所以它就弄了30个药丸,其中15个有药剂,15个空的,间隔排开,然后每天都吃一个,这样它就不用管(if-else)今天是单日还是双日了。
zhujinliang
2013-11-27 11:25:34 +08:00
恩,有些地方确实一点也没用if-else,真的,都是JC,JNC,CJNE,DJNZ。。。
lanyueniao
2013-11-27 11:30:29 +08:00
有分支就有if
else的地方都能用return
halfelf
2013-11-27 11:38:31 +08:00
里面的例子完全不适用,他那个能拆开是因为代码本身就该将take和padding解耦
dreampuf
2013-11-27 11:53:19 +08:00
@Mutoo 再加一个table drive
enson110
2013-11-27 12:13:22 +08:00
设计模式是毒药,已经毒到每写一个函数都考虑要不要建一个类。
后来我领悟了,第一次写代码,除非认定到后期一定会变化,否则直接写,等到以后变的时候再搞。
实现功能是主要,if else 就算你用拼音命名也不是不可以,只要你身边都能看懂,一切都ok。
hit9
2013-11-27 12:44:22 +08:00
为什么不用、 if else 描述分支再好不过了
FrankFang128
2013-11-27 12:47:57 +08:00
《不要过度设计》
wtbhk
2013-11-27 12:50:05 +08:00
凡事一概而论多半完蛋
Lelouchcr
2013-11-27 14:11:13 +08:00
为了这,还不如去写函数式。
yuxing1171
2013-11-27 14:28:29 +08:00
避免不了, 但可以尽量少用。
msg7086
2013-11-27 17:08:16 +08:00
看到标题第一反应是楼主要介绍haskell了么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/90780

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX