一些人,通常是那些來自一個C的背景下,代碼的測試爲null
這樣的:爲什麼人們使用if(null == var)風格測試?
if (null == someVar)
的信念,即「正常」的風格
if (someVar == null)
可能會不小心被編碼成
if (someVar = null)
這會在不經意間分配一個null
而不是測試對於null
。
但是,如果錯誤編碼如if (someVar = null)
發生:
- 爲了編譯,唯一的類型
someVar
可以是Boolean
- 如果它沒有編譯和被執行,它會拋出一個
NullPointerException
爲什麼不把這些人認識到「防禦性」(即滾珠絲槓)風格並不在所有幫助,因爲一個錯誤編碼或者不會編譯或不會運行!?
作爲性能問題,編碼if (null == someVar)
的執行速度實際上稍慢 - 一個指令的執行速度要慢一些。原因是必須將null
壓入堆棧進行比較,而「正常」樣式使用特殊的「is null」指令。
我知道...不是一個真正的問題。更多的咆哮。但我想把它放在那裏。 Upvote如果你也認爲他們「不夠有見地」。
但是,如果你確實知道答案,我想聽聽它。
首選項?或者他們認爲他們是尤達。 http://www.codinghorror.com/blog/2012/07/new-programming-jargon.html –
正則表達式涉及'null',剩餘的yoda條件?這將是不一致的。 –
你真的回答了你自己的問題 - 這是因爲他們來自的語言*確實允許不按照他們現在使用的語言編譯的作業 - 所以他們需要根據他們的語言重新學習使用。 – Fenton