PMDを使用してコードをチェックします。ほとんどの場合、非常に役立つヒントが得られますが、次のシナリオで何を改善できるかわかりません。
元のコードは次のようになります。
if ((getSomething() != null && getSomethingElse() != null)
|| (getSomething() == null && getSomethingElse() == null))
{
...
}
PMDは私に言います:
2 つの 'if' ステートメントは、条件をブール短絡演算子で区切ることによって統合できる場合があります。
簡単にするために、a と b をブール変数として使用します。次に、このコードは次のようになります。
if ((!a && !b) || (a && b))
これは、次のいずれかに変換できます。
if ((!a || b) && (a || !b))
if (!(a^b))
そして最後に
if (a==b)
だから私は私のコードを単純化しました
if ((getSomething() == null) == (getSomethingElse() == null))
ただし、PMD は不平を言い続けます (実際、3 つのバージョンすべてについて)。これは偽陽性ですか、それとも if 条件を記述するより良い方法はありますか?