簡體   English   中英

在Java中使用.equals方法的正確方法是什么?

[英]What is the proper way to use a .equals method in Java?

我正在和我的CompSci教授交談,他建議將所有String .equals方法寫成:

"Hello World".equals(fooString);

而不是:

fooString.equals("Hello World");

這兩行都編譯,但我想知道第一種方式有什么好處? 我總是以后一種方式做到這一點。 這是錯的嗎? 什么是常見/常規?

第一種方法保證永遠不會拋出NullPointerException ,而第二種方法可能會在fooString恰好為null時冒險獲取NullPointerException

然而,最終,這一切都歸結為要求。 如果需求指定不應該發生null情況,或者應該區別對待,那么以fooString.equals()方式( fooString.equals() )寫入可以幫助您檢測實現缺陷。 如果你可以將null視為另一種情況,那么第一種方式就可以了。

第一種方法可確保在執行比較時不會收到NullPointerException 當您嘗試在不存在的對象上調用方法時,拋出(發生)此異常。

下面有點相關切線:自我風險

但是,作為一個注釋,我很少,實際上看到了合法生產環境中使用的這種技術或編碼風格。 有兩個原因。

首先,在您的變量包含null的情況下,您編寫的程序幾乎總是希望做一些特殊或不同的事情。 這是因為它通常表示代碼功能的某些其他部分中的錯誤或需要解決的特殊情況。 因此,在對象(在本例中為String fooString進行任何比較或方法調用之前 ,應始終進行空檢查。

其次, fooString.equals("Hello World")只是讓你的代碼更具可讀性。 代碼中第一種技術的邏輯意義需要幾秒鍾才能正確處理,當您瀏覽數百或數千行代碼時,很容易出現判斷錯誤。 這實際上遠不如聽起來那么簡單,因為在工作世界中,往往會有非常龐大和非常古老的程序,這些程序將被那些對它們一無所知的人修補,然后再瞥一眼解決問題。 代碼可讀性極大地促進了公司執行快速分類和解決長期問題的能力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM