본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] Lombok 뭐 하는 녀석이냐?

by 돼지왕 왕돼지 2013. 7. 14.
반응형


 안드로이드, Lombok 뭐 하는 녀석이냐?

 

[android] 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 와 주의사항을 숙지해야 한다.



반응형

댓글