본문 바로가기

PMD

[한글화 시리즈-11] JavaBean Rules

JavaBean Rules

이 룰셋은 java bean에 관한 룰들을 포함한다.



BeanMembersShouldSerialize

Bean 클래스이거나 간접적 혹은 Bean으로부터 직접적으로 참조된 클래스라면, 직렬화(serializable)는 꼭 필요하다. 클래스 맴버 변수들은 transient, static 으로 선언하거나, accessor 메소드들을 갖어야한다. 변수를 transient 선언 하는 것이 가장 쉽고 안전한 방법이다. 예로, 접근 메소드(accessor)들은 자바 명명 규칙을 따라야한다. 변수명이 foo라면, 접근 메소드들은 getFoo와 setFoo가 되어야 한다.

*transient는 bean의 클래스 맴버 변수들 중 객체직렬화를 원치 않는 변수에 선언한다.

  private transient int someFoo;//transient이 선언되었다. OK
  private static int otherFoo;//static이 선언되었다. OK
  private int moreFoo;//아래 접근 메소드들이 있다. OK
  private int badFoo;//나쁜 방법, static이나 transient이 선언되어 있지 않고
  //접근 메소드들도 없다. transient 선언이 가장 쉬운 해결책이다.

  private void setMoreFoo(int moreFoo){
    this.moreFoo = moreFoo;
  }

  private int getMoreFoo(){
    return this.moreFoo;
  }

MissingSerialVersionUID

객체직렬화가 되는 클래스들은 serialVersonUID 필드를 제공해야한다.

public class Foo implements java.io.Serializable {
  String name;
  // 직렬화관련 버그들을 피하기위하여 다음과 같이 serializaion id를 선언하자.
  public static final long serialVersionUID = 4328743;
}

해당 URL: http://pmd.sourceforge.net/pmd-4.2.6/rules/javabeans.html