2013년 5월 31일 금요일

Lombok을 활용하여 소스 코딩량을 줄이며 가독성을 높이기

lombok활용

Lombok을 활용하여 소스 코딩량을 줄이며 가독성을 높이기

Java 클래스를 코딩할 때 대부분의 필드 변수에 Getter/Setter 메소드를 만들어야 한다. 이는 지루하고 귀찮은 작업이다. Lombok을 사용하면 어노테이션을 통해 Getter/Setter 메소드를 자동 생성할 수 있다.

Lombok을 사용한 코드를 살펴보자.

@Data
public class SomeEntity {
  private String name;
  private int birthYear;
  private int birthMonth;
  private int birthDay;
  private String phoneNumber;
  private Sex sex;
}

Lombok을 사용할 경우 소스의 길이가 줄어 가독성이 좋아졌음을 확인할 수 있다. Lombok은 컴파일 타임에 해당 메소드들을 자동으로 만들어낸다. 실제 소스상에는 존재하지 않는 상태로.

Getter/Setter 메소드 이외에도 Lombok을 통해 hashCode(), equals(), toString() 메소드를 자동 생성할 수 있으며, @Log나 @Slf4j 같은 어노테이션을 사용하면 log 객체도 생성이 된다.

Eclipse와 같은 IDE들이 getter/setter나 hashCode()들을 자동으로 만들어 주는데 lombok이 필요한 이유가 뭘까? Lombok을 사용하는 개발자의 블로그 내용을 인용하면

첫째는 소스 가독성이다.

습관적으로 getter/setter를 만들다 보면 사실 정말 똑같은 코드가 반복해서 생성되게 된다. 이 상황에서 유달리 다른 로직이 들어간 getter/setter가 가끔 있게 마련인데 이 때 이 특별히 튀는 이 코드를 찾아내는 것이 여간 번거로운 것이 아니다.

lombok을 사용하면 @Data 어노테이션 만으로 기본 getter/setter가 자동 생성되고, 로직이 들어가는 일부 getter/setter만 직접 구현하면 된다. 따라서 소스 코드 가독성이 매우 높아지고 유지보수성도 증대된다.

둘째로 아무리 IDE가 자동으로 getter/setter를 자동 생성해줘도 코딩 도중 지속적으로 추가되는 필드에 대해서 단순 반복 노가다를 한다는 점은 변함이 없다. 노가다 량이 줄긴 하지만. lombok은 @Data 어노테이션만 주면 그 뒤로는 신경쓰지 않아도 된다.

이클립스에 사용

lombok.jar를 실행(더블클릭 혹은 java -jar lombok.jar)후 지시데로 설정한다.

javac(Maven, Ant, Gradle)에 사용

컴파일 클래스패스에 lombok.jar를 포함시키면 된다.

References

Maven의 이해

Cygnus Unit Test 전략