코드를 확인하려면 PMD을 사용합니다. 대부분의 경우에 매우 유용한 힌트를 제공하지만 다음 시나리오에서 개선 할 수있는 것을 파악할 수는 없습니다.자바 접을 수있는 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-condition을 작성하는 더 좋은 방법입니까? 개인적으로, 나는 == null의 경우를 나는이 (가) ==가 null와 b 처리 할 수 있도록이 이전에 if 문을 확인 널을 할 거라고 ..although
코드에 _if_ 문이 없습니까? PMD는 _two_ if 문에 대해 불평하지만, 하나가 아니라 필요한 것보다 복잡합니다. – michael667
최종 버전을 더 잘 만들 수있는 방법을 생각할 수 없습니다 (코드 작성). * 내부 *는'if' 블록입니다 - 거기에 또 다른'if'가 있습니까? – Bohemian
방금 JSR305 명세서에서'@ javax.annotations.Nonnull'과'@ javax.annotations.Nullable' 주석을 발견했습니다. 내가 사용하고있는 구현은'com.google.code.findbugs : 1.3.9'에있는 Google입니다.그것은 내 코드를 상당히 정리하고 Intellij IDEA는 이러한 주석을 기반으로 코드와 경고를 자동으로 생성합니다. –