본문 바로가기
  • SDXL 1.0 + 한복 LoRA
  • SDXL 1.0 + 한복 LoRA
Development/JAVA

[디비 파기 | PMD] PositionLiteralsFirstInComparisons 외 4건

by 마즈다 2016. 4. 3.
반응형



PositionLiteralsFirstInComparisons


우선순위 : 3

 

Position literals first in comparisons, if the second argument is null then NullPointerExceptions can be avoided, they will just return false.

 

equals()를 통한 비교를 할 때는 항상 상수 값을 앞에 두어야 한다.
만일 두번째 인자가 null인 경우에는 NullPointerException이 발생하지 않으며
단순히 false를 리턴하게 된다.

 

하지만 상수가 아닌 참조타입의 변수가 앞에 오게 되면 이 변수가 null인 경우
NullPointerException이 발생하게 된다.

 

샘플 코드




UnnecessaryLocalBeforeReturn


우선순위 : 3

Avoid the creation of unnecessary local variables

 

불필요한 지역변수를 만들지 말라.

 

모든 변수는 메모리를 사용하는 만큼 가급적이면 꼭 필요한 변수만
필요할 때 만들어서 사용하는 것이 좋을 것이다. 이 것이 힘들다면
절대 필요하지 않을 것 같은 변수는 만들지 않는 것이 좋을 것이다.

 

샘플 코드




AvoidConstantsInterface


우선순위 : 3

An interface should be used only to characterize the external behaviour of an implementing class: using an interface as a container of constants is a poor usage pattern and not recommended.

 

인터페이스란 클래스가 외부와 어떤 행위를 하도록 하는 내용으로 구현되어야만 한다.
단지 상수를 저장해놓는 컨테이너로만 사용되는 인터페이스는 권장되지 않는다.

 

샘플 코드 (나쁜 예)





UseCollectionIsEmpty


우선순위 : 3

The isEmpty() method on java.util.Collection is provided to determine if a collection has any elements. Comparing the value of size() to 0 does not convey intent as well as the isEmpty() method.

 


컬렉션 객체에 엘리먼트들이 없다는 것을 확인하기 위해서는 size() == 0 보다는
isEmpty() 사용이 권장된다. size()를 통한 비교는 isEmpty()에 비해 그 의도가
명확하게 전달되지 않는다.

 

샘플코드

 

부연설명

일반적으로 isEmpty() 메소드와 size() 메소드의 성능상의 차이는 없는 것으로 보아도
좋습니다. 다만 메소드 명에서 드러나는 ‘의도’가 isEmpty쪽이 좀 더 분명하다는
장점이 있습니다. 참고로 ArrayList에 구현된 isEmpty() 메서드와 size() 메서드의
내용은 다음과 같습니다.





ReturnEmptyArrayRatherThanNull


우선순위 : 1

For any method that returns an array, it is a better to return an empty array rather than a null reference. This removes the need for null checking all results and avoids inadvertent NullPointerExceptions.

 


배열을 리턴하는 메소드에서 배열에 엘리먼트가 없더라도
null 보다는 빈 배열을 리턴하는 것이 좋다.
이렇게 하는 것은 불필요한 null 체크를 피할 수 있을 뿐만 아니라
의도하지 않은 NullPointerException이 발생하지 않도록 할 수도 있다.

 

샘플 코드


반응형