2013-07-25 134 views
0

這個問題僅僅是做的比較:Null =!對象vs對象=!空

如果一個條件語句是否優於其他
if(Null != Object){ 
    /// code here. 
} 


if(Object != Null){ 
    /// code here. 
} 

任何人都可以附和?它是否依賴於案件?

我一直使用Object != Null,但我今天聽說了Null != Object,並想知道它的區別?

語言不可知的。

- 感謝所有在鐘聲!

+0

他們是相同的... – McGarnagle

+2

@McGarnagle不:相同,他們是。這就是所謂的*尤達條件* https://en.wikipedia.org/wiki/Yoda_Conditions –

回答

1

它們在邏輯上是相同的。

我知道有人喜歡誰Null != Object和他們給出的最常見的原因是:

  • 這是不太可能通過使用=代替==因爲Null = <anything>將導致編譯器錯誤有一個錯誤。
  • 它獨特而酷。

類似蒼蠅的第一個原因(雖然我不認爲這是值得打擊代碼可讀性),但我非常反對第二個原因。爲了便於閱讀,我個人更喜歡Object != Null。它與所表達邏輯的實際說話形式相當接近。 (請記住,代碼主要是爲了人類閱讀而編寫的,並且只有被機器執行的次要目的。)

0

還有兩件事情需要比較。

1

有些人喜歡使用Null != Object,因爲它更安全,可以防止輸入錯誤。使用另一種形式,您寫入Object = Null的風險稍高,這可能是一個嚴重且難以注意的錯誤。

有些人喜歡Object != Null,因爲它的英文更自然地讀。

但它完全是文體 - 兩種形式在功能上是等同的。

1

的原因是真的,因爲C,並且通常與運營商的平等,而不是運營商的不平等交易。這是因爲在C中,你有===,它們都做了完全不同的事情。問題是,它很容易誤認爲一個其他的,所以你可能最終用下面的代碼:

int *i = malloc(sizeof(int)); 
if (i=NULL) { 
    ... do nothing? 
} else { 
    free(i); 
} 

這是一個很難錯過錯誤,但是這個代碼應該使用==操作。問題是編譯器認爲這是正確的,並且你的代碼中有一個錯誤。

我不知道原因與不平等運營商雖然比其他風格做到這一點。