为什么变量和常量比较时,要把常量放在前面
这是好久以前我遇到的问题,那时,我写代码进行比较的时候,总是习惯于把变量写在前面,把常量写在后面。 一天同事对我说,不要(不能)怎么写,应该把常量写在前面。而我当时只是把这个“规则”记录下来了,并没有寻根究底,直到现在整理我的工作表的时候,才发现这个问题我还没有搞明白。 于是在网上搜了搜。
这个规则真的违背了我们的思维习惯,我们在作比较的时候,总会有一个主体,而这个主体就是程序中的“变量”,我们总希望这个变量“满足”或“不满足”某些条件,于是,我们拿它去和条件比较。再说说我们的表达习惯,如果A满足**条件时,发生B事情,转换成程序表达,则是
if(A等于**条件)
发生B事情
而这个规则明显和我们的思维习惯不符合。
为什么要有这个规则? 该规则的出发点是:在程序员少写一个等号时,防止编译器仍能够正常编译通过。 解决这种状况,要么永远不会少写等号,要么编译器能够发现if(变量=常量)的错误。当然,前者是不能保证的。所幸的是有部分(?)编译器能够识别这种错误。
还有一个优势(不知是否正确):(下段引自CSDN中的讨论,尾部附有链接)
if( 0 == len) 比 if( len == 0) 的速度(忘了是编译速度还是执行速度)要快,因为0为常量,因此编译器已经预知其对象类型。 好象是《effective c++》里面说过的
我查看《effective c++》(第三版),并没有找到这个说法。
附上参考的文章的链接:
blog comments powered by Disqus