我使用PMD來檢查我的代碼。在大多數情況下,它給了我很多有用的提示,但我無法弄清楚在以下情況下可以改進哪些方面。Java可摺疊if語句
原始代碼看起來是這樣的:
if ((getSomething() != null && getSomethingElse() != null)
|| (getSomething() == null && getSomethingElse() == null))
{
...
}
PMD告訴我:
有時是兩個「如果」語句可以用一個布爾短路運營商分離的 條件得到鞏固。
爲簡單起見,我們只需使用a和b作爲布爾變量。那麼這段代碼看起來是這樣的:
if ((!a && !b) || (a && b))
這可以轉化爲下列之一:
if ((!a || b) && (a || !b))
if (!(a^b))
最後
if (a==b)
所以我簡化我的代碼
if ((getSomething() == null) == (getSomethingElse() == null))
然而,PM D不斷抱怨(實際上關於所有三個版本)。這是一個假陽性還是有更好的方式來編寫if條件?
你確定你的代碼中沒有另外的_if_語句嗎? PMD抱怨_two_如果陳述,而不是一個比必要更復雜 – michael667
我想不出更好的最終版本(這是我的代碼)。 * if裏面有什麼* if - 塊裏面有另外一個if嗎? – Bohemian
我剛剛在JSR305規範中發現了@ javax.annotations.Nonnull和@ javax.annotations.Nullable註解。我使用的是'com.google.code.findbugs:1.3.9'中的Google實現。它大大清理了我的代碼,Intellij IDEA auto根據這些註釋生成代碼和警告。 –