2010-09-07 92 views
3

我是一个经验丰富的程序员,因此感到有点尴尬问这个问题,但决定这样做反正。参数比较顺序

我在读这本书,也看到了各种各样的网络例子,比较操作中的参数顺序是颠倒的,我想知道是否有原因,或者只是因为它看起来很“酷”并做完全相同的事情。

例子:

我将代码:

if(bool_variable == YES) 

,而我在这本书和各种实例

if(YES == bool_variable) 

解释看到的?

谢谢!

+0

下次请格式化您的代码(缩进4个空格或使用101010按钮)。 – 2010-09-07 21:19:34

回答

6

有些人喜欢yoda conditions,因为他们可以帮助您发现错误,您不小心键入=而不是==。例如:

if (var = YES) 

会编译但可能无法按照您希望的方式工作。反过来写:

​​

会导致编译时错误。我个人不喜欢这个构造,但是对于他自己而言,我猜。

+3

现在不再需要用现代编译器来做这种事情,它可以在你犯这个错误时发出警告。 GCC和Clang都有这种能力。 – 2010-09-07 21:51:19

+0

+1 @Peter。 “建议在有条件的地方围绕任务进行括号”或者沿着这些线,我想。 – 2010-09-07 22:14:15

+0

非常感谢您的启迪! – schone 2010-09-08 15:59:59

0

卡尔得到了它 - 一个将常量放在左边的程序员将受到编译器的保护。

我只是想补充一点,也许人们转换他们的原因之一是一个人或一个人的雇主可能有代码风格指南,指定常量应该在哪个方面,但这当然只适用于安全没有语法错误。

为了便于阅读,我个人总是在骑车的一面上写下自己的常识。