我看到這個有很多在別人的代碼:空的檢查條件都這樣寫的:是否有任何理由在java中使用null == value條件?
if (null == value)
而不是
if (value == null)
我不認爲有任何理由有null
在Java中位於運算符之前。這樣做有什麼好處嗎?這僅僅是一個C++程序員錯誤地將他的技能應用於Java的案例,還是我錯過了一些重要的東西?
我看到這個有很多在別人的代碼:空的檢查條件都這樣寫的:是否有任何理由在java中使用null == value條件?
if (null == value)
而不是
if (value == null)
我不認爲有任何理由有null
在Java中位於運算符之前。這樣做有什麼好處嗎?這僅僅是一個C++程序員錯誤地將他的技能應用於Java的案例,還是我錯過了一些重要的東西?
這是一個所謂"Yoda Conditions" (item #1)的情況。雖然可以在C/C++中合理化它們,但沒有理由在Java中使用它們。
在C/C++中,任何類型的表達式都可以寫入if
s和while
s。寫
if (var = NULL) // No compile-time error in C/C++
代替
if (var == NULL)
是新手中一個常見的錯誤。尤達條件按說補救措施來解決這個問題,在「Yodifying」你的代碼的成本:C/C++會捕獲分配到NULL
if (NULL = var) // Compile-time error
但「逆轉」 NULL
檢查都正常:
if (NULL == var)
由於Java認爲if
,while
和for
控制塊內部的非布爾表達式是錯誤,因此它會捕獲var = null
而不是var == null
,從而觸發錯誤。因此,沒有理由通過「讚美」你的表達來放棄可讀性。
這通常是開發人員的母語的人工產物。有些語言的規則使null == value
比value == null
更自然。在語法上,它們與Java相同。
不,它不是因爲「null == value」更自然而退出語言的原因。它只是一個編碼gudeline,爲了避免意外地忽略一個「=」而不是正確的「==」 – AlexWien
不是檢查可能意味着空指針異常。
按此順序放置它可以幫助您不會將=(賦值)與==(相等)混淆。
既
if (a = null)
和
if (a == null)
將編譯;然而,你可能想要第二個而不是第一個。
如果它們翻轉,
if (null = a)
將無法編譯,而
if (null == a)
將編譯。
因此,您可以在編譯時捕獲一個小的,難以發現的錯誤。
比方說,你只需要打印一個字符串的內容,如果它比20再你會做到這一點:
if (str != null && str.length() > 20) {
System.out.println(str);
}
離開了這個str != null &&
會拋出NPE如果str
實際上是null
。
如果你指的
if (str == null) { ... }
和
if (null == str) { ... }
有沒有區別。
只是爲了確保你沒有爲例如value = null
分配一個值,如果你忽略==所以這段代碼會很好的編譯,只能在運行時才能識別,但是如果你這樣嘗試,編譯。
這是不正確的...無論如果塊我不會編譯與此 – bharal
@bharal null =值將不會編譯,它會拋出編譯器錯誤 –
答案是否定的!
有絕對不需要if (null == value)
而不是if (value == null)
在java!
if (null == value)
的檢查有點奇怪,至少在java中,來自C和C++中的代碼指導原則,這很有意義。
我喜歡更多if (value == null)
這是更好的可讀性。
的原因是爲了避免C/C++,而不是正確的if (value == null)
如果使用if (null = value)
的C/C++編譯器會拋出異常錯誤if (value = null)
。
但是在java中,即使是if (value = null)
也會是一個語法錯誤。
所以不要使用(null == value)
在java中
它可以讀取更好一些次
if(null == someFunction(someParameter, anotherParameter))
VS
if(someFunction(someParameter, anotherParameter) == null)
你有示例代碼?我真的不明白這個問題...抱歉 –
@MatiasCaamaño'if(null == value)'而不是'if(value == null)' – Vulcan
這聽起來像是http://stackoverflow.com/questions/的重複3021195/which-is-more-effective-if-null-variable-or-if-variable-null – NPE