2010-09-07 78 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

卡爾得到了它 - 一個將常量放在左邊的程序員將受到編譯器的保護。

我只是想補充一點,也許人們轉換他們的原因之一是一個人或一個人的僱主可能有代碼風格指南,指定常量應該在哪個方面,但這當然只適用於安全沒有語法錯誤。

爲了便於閱讀,我個人總是在騎車的一面上寫下自己的常識。