這個問題僅僅是做的比較:Null =!對象vs對象=!空
如果一個條件語句是否優於其他if(Null != Object){
/// code here.
}
if(Object != Null){
/// code here.
}
任何人都可以附和?它是否依賴於案件?
我一直使用Object != Null
,但我今天聽說了Null != Object
,並想知道它的區別?
語言不可知的。
- 感謝所有在鐘聲!
這個問題僅僅是做的比較:Null =!對象vs對象=!空
如果一個條件語句是否優於其他if(Null != Object){
/// code here.
}
if(Object != Null){
/// code here.
}
任何人都可以附和?它是否依賴於案件?
我一直使用Object != Null
,但我今天聽說了Null != Object
,並想知道它的區別?
語言不可知的。
- 感謝所有在鐘聲!
它們在邏輯上是相同的。
我知道有人喜歡誰Null != Object
和他們給出的最常見的原因是:
=
代替==
因爲Null = <anything>
將導致編譯器錯誤有一個錯誤。類似蒼蠅的第一個原因(雖然我不認爲這是值得打擊代碼可讀性),但我非常反對第二個原因。爲了便於閱讀,我個人更喜歡Object != Null
。它與所表達邏輯的實際說話形式相當接近。 (請記住,代碼主要是爲了人類閱讀而編寫的,並且只有被機器執行的次要目的。)
還有兩件事情需要比較。
有些人喜歡使用Null != Object
,因爲它更安全,可以防止輸入錯誤。使用另一種形式,您寫入Object = Null
的風險稍高,這可能是一個嚴重且難以注意的錯誤。
有些人喜歡Object != Null
,因爲它的英文更自然地讀。
但它完全是文體 - 兩種形式在功能上是等同的。
的原因是真的,因爲C,並且通常與運營商的平等,而不是運營商的不平等交易。這是因爲在C中,你有=
和==
,它們都做了完全不同的事情。問題是,它很容易誤認爲一個其他的,所以你可能最終用下面的代碼:
int *i = malloc(sizeof(int));
if (i=NULL) {
... do nothing?
} else {
free(i);
}
這是一個很難錯過錯誤,但是這個代碼應該使用==
操作。問題是編譯器認爲這是正確的,並且你的代碼中有一個錯誤。
我不知道原因與不平等運營商雖然比其他風格做到這一點。
他們是相同的... – McGarnagle
@McGarnagle不:相同,他們是。這就是所謂的*尤達條件* https://en.wikipedia.org/wiki/Yoda_Conditions –