stackoverflow 上关于选择 switch 而不是 if / else 的讨论

如题 ,最高票答案拳拳到肉,翻译一下:


1 更干净的代码。带有大量 if / else if 的代码看起来非常混乱,并且难以维护。而 switch 结构要清晰得多;

2 性能。对于密集的 case 值,编译器会用调表,对于稀疏的 case 值,会用二分查找或者生成 if / else,所以最坏的情况是跟 if / else 一样,但通常会更快一些。尽管有些编译器也会类似地优化 if / else;

3 检测顺序不重要。为了加速 if / else 通常要把最有可能命中的放在最前面。而 switch / case 不需要考虑这些。

4 默认情况可以放在让人很地方。 if / else 的缺省处理必须放在最后一个 else  后面。在 switch 语句,default 可以放在任何一个地方,任何一个程序员觉得更适合的地方。

5 共用代码。如果你需要在几个 case 里面执行相同的代码,你只需要忽略 break,然后让执行流继续往下走,这是你无法在 if / else 中实现的。(有一个好的实践就是一个特殊的注释 /* FALLTHROUGHT */ 对于这样的 case,这样编译器就不会提示,否则可能会提示说忘了加 break)。


原文地址:why-switch-case-and-not-if-else-if

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值