java

PMD로 배우는 올바른 자바 코딩 방법

gt1000 2014. 9. 16. 01:31

[출처 : PMD로 배우는 올바른 자바 코딩 방법]

 

1 float, double 사용시 조심

 - 4.7 + 0.4 는 5.1이 아님

   근사치 값을 가지고 계산 하므로 BigDecimal을 사용해야 함

2 Boolean 변수 사용시

 - new Boolean(true) 또는 Boolean.valueOf(true) 가 아니라.

   Boolean.TRUE, Boolean.FALSE 사용

3 BigInteger 사용시 주의점

 - 0, 1, 10의 값은 상수로 정의 되어 있으므로

   BigInteger.ONE, BigInteger.ZERO 등을 사용

4 파일 skip 메서드는 원하는 만큼 건너뛰어 주지 않는다.

 - 확인하는 코드가 필요

   long skipSize = 1024;

   long skipped;

   while(skipSize != 0) {

       skipped = is.skip(skipSize);

if(skipped == 0) {

throw new EOFException():

}

skipSize -= skipped;

  }

5 finally 절에 return 하지 말것.

  - catch 에서 throw 할 경우

6 괄호 스타일

 - 1TBS

    코드가 한줄이라도 반드시 괄호를 해라. if, for, while 문 전부 동일

    if(condition) {

 xxxx;

    } else {

       xxxxx;

    }

7 StringBuffer, StringBuilder 사용시

 - 절대 안에서 + 를 사용하지 말것.

 - 생성자를 충분히 전체 길이를 예상하여 초기화 하여야 함

 - buffer.append("a).append("b").append("c"); 와 같이 체인 형태를 사용하지 말것

 - 멤버 변수로 사용하지 않음

8 대소문자를 포함한 문자열 비교법

 - toUpperCase/toLowerCase의 경우 내부에서 임시 char 배열과 같은 인스턴스를 생성한다.

   equalsIgnoreCase를 사용, String 기본 메서드로서 내부에서 toLowerCase로 변경해서 비교하지만 약간 빠르다고 함

9 싱글톤 패턴( 디자인 패턴 책에서 참조)

 - 처음부터 생성을 하던지... 아니면 volatile 키워드를 사용해서 DCL(Double-Checking Locking)을 사용.

 private volatile static Singleton uniqueInstance ;

 private Singleton() {}

 public static Singleton getInstance() {

     if(uniqueInstance == null) {

         synchronize(Singleton.class) {

       if(uniqueInstance == null) {

           uniqueInstance = new SingleTon();

       }

         }

     }

     return uniqueInstance;

 }

10 인터페이스

 - 내부의 모든 구성 요소에는 public 키워드가 묵시적으로 적용되어 외부로 공개되 있으므로

   구성 요소에 강제로 private나 protected 키워드로 접근을 제한하는 것은 불가능

   void printValue();

11 Thread

 - run 메소드 보다 start를 이용해라. run 의 경우 단순히 순차적인 호출을 함. start 의 경우

   스레드 작업을 위한 새로운 호출 스택을 생성하고 해당 스택에서 run 메서드를 호출

   Thread.run(Runnable 인터페이스를 구한현 run 메서드를 실행할때)

   Runnable 인터페이스 구현체 안에서 sleep 이 있어도 순차적으로 실행이 됨.

   반드시 start를 사용할것