안드로이드, Lombok 뭐 하는 녀석이냐? |
Lombok 이 뭐야?
OpenSource project 로 eclipse 에 설치해서 사용하는 유용한 녀석이다. add-on 비슷한 녀석이랄까?
annotation 등을 이용하여 반복적으로 생성하는 지루한 코드들을 모두 생략할 수 있다.
Lombok Features
@Getter, @Setter
자동으로 getter, setter 들을 만들어준다.
accesslevel 도 지정가능하고, override 도 가능하다.
@Getter(lazy=true)
thread-safe 한 getCached() 라는 함수를 만들어준다. 이 함수는 expensive 한 작업에 대해서 cache를 뜬다.
@ToString
필자가 개인적으로 가장 원하던 녀석으로, field name 을 기준으로 toString 을 자동생성해준다. 옵션을 통해 super class 의 toString 도 부를지, fieldname 도 넣어줄지, exclude 할 field 가 있는지 지정할 수 있다.
@EqualsAndHashCode
이 녀석도 필자가 개인적으로 가장 원하던 녀석으로, euqlas 와 hashCode 함수를 만들어준다.
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
여러가지 종류의 constructor 를 자동으로 만들어주며, @NotNull option 에 따라 null check 도 해준다.
@Data
@Tostring, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor 의 종합판
@Cleanup
close() 함수를 불러줘야 하는 Stream 류 등의 close 를 보장해준다.
@Synchronized
기본 synchronized 와 비슷하지만, 다른 lock을 생성해서 handle 한다. class 나 this 로 lock 을 거는 것은 외부에서도 할 수 있기 때문에 안전하지 못하다.
@SneakyThrows
...
@Log
...
val
이 녀석은 annotation 은 아닌데, 해당 변수를 final 로 만들어주며, type 지정을 하지 않아도 되서 편하다. javascript 에 길들여진 사람이 쓰면 좋을듯 싶다.
@Delegate
Composition 을 사용하는 경우 delegate 를 사용해야 하는데, 그 코드들을 줄일 수 있다.
Lombok 사용시 주의사항
Lombok 의 경우 매우 유용하긴 하지만, library 형식이 아니라 eclipse에 설치가 되어야 하는 형식이다.
따라서 Lombok 의 존재를 제대로 모르는 사람이 소스를 받게 될 경우 골치아플 수 있다.
프로젝트를 진행할 때 Lombok 을 사용하기로 정했다면, 문서에 확실히 명시해두고, 같이 일하는 동료들과 협의를 통해 모두 설치해서 진행해야 한다.
항상 그렇지만 external library 에 대한 맹신적인 사용은 지양해야 한다. 문서를 확실히 읽어보아 side effect 와 주의사항을 숙지해야 한다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] actionbar 어떻게 사용하고, 왜 사용하는가? (0) | 2013.07.15 |
---|---|
[android] AndroidAnnotations 와 Otto 를 이용한 빠른 앱 개발. (0) | 2013.07.15 |
[android] fragment 간 통신. (Communication) (0) | 2013.07.14 |
[android] jsoup library (0) | 2013.07.13 |
[android] Google Map Android API V2 에 대하여.. (2) | 2013.07.13 |
댓글