说主题,这里的 if-return 其实不会提高性能
看起来是少了 if-else ,可也别把编译器当傻子,编译器早就知道优化这种情况了。
if-return 的用法主要是用在输入验证的时候,可以 if (illegal) return error ,在要验证的内容很多的情况下,可以有效减少嵌套层数,提高代码可读性。和性能没半毛钱关系。
另外这种情况 C/C++代码用的比较多。
Python 里面楼上用函数表就是标准做法,一点也不偏,这就是状态模式的一种表达法。如果平时用状态模式考虑问题,这种表达是很自然的。你必须理解一点:程序也是数据。
C 里面用函数指针也可以实现,不知道为啥不多见。可能因为过程语言本身的习惯,以及函数指针没用起来那么方便。毕竟 C 里面还要自己处理越界,不能依赖 runtime 检查。
@
aleen42 解释型语言就别纠结这种零碎性能了,谁知道 runtime 开销多大。可维护性最重要。不是所有判断条件都是整数的。比如写个 HTTP 后端,完全可以直接用字符串做 method 的选择。