您的位置:首页 > 其它

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

2015-07-16 23:32 337 查看
如题 ,最高票答案拳拳到肉,翻译一下:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: