끄적끄적 코딩일지

Lombok - @Setter를 지향해야 하는 이유 본문

Java

Lombok - @Setter를 지향해야 하는 이유

BaekGyuHyeon 2022. 7. 3. 17:59

프로젝트를 진행하면서 Lombok 쓰면 편하게 코드를 작성할 수 있다. 생성자, Getter, Setter, Builder 등을 Annotation하나로 쉽게 만들수가 있어 코드의 가독성을 높혀준다. 하지만 이중에서 Setter는 가능한 사용을 지양해야하는데 그 이유를 알아보자


1. 값을 변경한 의도를 알기가 어렵다.

Setter 자체에 오류가 있다기보다는 유지/보수 측면에서 잘 사용하지 않는다. 일단 setter를 사용하면 해당 값을 왜 변경했는지 알기 어렵다. 어떤 변수를 변경하는지는 쉽게 알 수 있지만 왜 해당 변수를 변경하는지는 쉽게 알 수가 없다. 이는 실무에서 코드를 유지보수할 때 꽤 불리하게 적용된다.

 

2.  객체의 일관성을 유지할 수 없다.

@setter를 사용하면 모든 변수에 대하여 public으로 setter method를 만든다. 즉 변수가 final이 아닌이상 전부 변경 가능한 상태가 된다. 이는 의도치 않은 변경을 하게될 수 있다.

 


정리하자면 의도치 않은 변경을 하게될 수 있고, 변경한 의도를 모르기 때문에 사용을 자제해야한다는 것이다.

그러므로 Builder와 Constructor를 사용하여 생성단계에서 필요한 정보를 set하고 변경이 필요한 경우 따로 Method를 작성하여 사용하도록 하자.