일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- spring
- session
- 생명주기 콜백
- jQuery
- Hibernate
- SseEmitter
- Project
- JPA
- flask
- web
- JWT
- real time web
- 항해99
- python
- html
- Java
- programmers
- server send event
- oauth
- Spring Security
- DI
- bean
- cookie
- WIL
- Anolog
- Stream
- javascript
- jenkins
- hanghae99
- google oauth
Archives
- Today
- Total
끄적끄적 코딩일지
Lombok - @Setter를 지향해야 하는 이유 본문
프로젝트를 진행하면서 Lombok 쓰면 편하게 코드를 작성할 수 있다. 생성자, Getter, Setter, Builder 등을 Annotation하나로 쉽게 만들수가 있어 코드의 가독성을 높혀준다. 하지만 이중에서 Setter는 가능한 사용을 지양해야하는데 그 이유를 알아보자
1. 값을 변경한 의도를 알기가 어렵다.
Setter 자체에 오류가 있다기보다는 유지/보수 측면에서 잘 사용하지 않는다. 일단 setter를 사용하면 해당 값을 왜 변경했는지 알기 어렵다. 어떤 변수를 변경하는지는 쉽게 알 수 있지만 왜 해당 변수를 변경하는지는 쉽게 알 수가 없다. 이는 실무에서 코드를 유지보수할 때 꽤 불리하게 적용된다.
2. 객체의 일관성을 유지할 수 없다.
@setter를 사용하면 모든 변수에 대하여 public으로 setter method를 만든다. 즉 변수가 final이 아닌이상 전부 변경 가능한 상태가 된다. 이는 의도치 않은 변경을 하게될 수 있다.
정리하자면 의도치 않은 변경을 하게될 수 있고, 변경한 의도를 모르기 때문에 사용을 자제해야한다는 것이다.
그러므로 Builder와 Constructor를 사용하여 생성단계에서 필요한 정보를 set하고 변경이 필요한 경우 따로 Method를 작성하여 사용하도록 하자.