3 回答

TA貢獻1784條經(jīng)驗 獲得超8個贊
我會去
"Something".equals(MyInput);
在這種情況下,如果MyInput是null,則不會拋出NullPointerException
在這里,我們確定equals()要調(diào)用的對象是NOT NULL。
并且,如果您希望NullPointerException代碼做出一些決定或拋出/包裝它,那么請首先進行。
對性能沒有影響

TA貢獻1794條經(jīng)驗 獲得超8個贊
成為逆勢.... :)
如果MyInput為null,則第一行可能會崩潰,但這只是為了方便代碼的程序員(通常帶有C宿醉)在不想斷言“ MyInput”可以為null時使用。
如果使用第二個選項,則此行可能不會導致NullPointerException,但以下幾行可能會導致。
我相信最好了解變量的可能狀態(tài),而不是依賴于一些可以簡化您的良心的代碼構造。

TA貢獻1842條經(jīng)驗 獲得超13個贊
那么我們?nèi)绾螌⒄麄€代碼上下顛倒地進行更改呢?
那些首先喜歡常數(shù)的人,看到它們時會感覺如何?
if ( 2 == i)
在我看來,隱藏NullPointerException永遠不是好處,而是設計中的一個缺點。
如果您從不期望NullPointerException卻遇到了NullPointerException,那么您需要讓應用程序崩潰,跟蹤日志并查看發(fā)生這種情況的原因。您可能完全錯過了一個商業(yè)案例:)
如果您可以選擇使用null參數(shù),并且對單獨處理它不感興趣,則可以使用StringUtils.equals(...)之類的實用程序方法
就是說,我絕不允許任何團隊成員使用第二種形式,因為第二種形式不一致且不可讀。
添加回答
舉報