본문 바로가기
학습/Java

[java] Shy Code를 깨트리는 Lombok의 @Data 어노테이션

by KKambi 2020. 1. 23.

디미터의 법칙

= 최소 지식의 원칙(principle of least knowledge)

= 클래스 간의 결합도를 줄이기 위한 원칙

더보기

해석본

1. 객체 O 자신의 메서드는 호출할 수 있다

2. 메서드 m의 매개 변수들의 메서드는 호출할 수 있다.

3. 메서드 m 안에서 생성/초기화 한 객체들의 메서드는 호출할 수 있다.

4. 호출을 위한 메서드 또는 속성으로서 같은 클래스 안에서 선언된 객체의 메서드는 호출할 수 있다.

5. 객체 O가 접근할 수 있고, 메서드 m의 스코프에 있는 전역 객체의 메서드는 호출할 수 있다.

 

Lombok의 @Data

1. @ToString, @EqualsAndHashCode, @Getter / @Setter and @RequiredArgsConstructor 를 한 번에 사용하는 강력한 어노테이션

 

2. 편하지만, 너무 많다.

 

3. @Setter

- 객체를 언제든지 변경할 수 있는 상태가 된다

- 객체의 안정성을 보장받기 힘들다

=> Builder 패턴을 사용하자.

 

4. @ToString

- 양방향 참조관계일 때, 한 쪽의 toString()을 호출하면 순환참조 문제

=> @ToString(exclude = "...")처럼 어노테이션을 이용해 제외하자

 

 

결론

Lombok의 @Data는 편하지만 너무 강력해서 객체 간 결합도를 높일 수 있다.

필요한 어노테이션을 골라 사용하자.

 


출처

https://meetup.toast.com/posts/216

https://cheese10yun.github.io/lombok/

댓글