29CM 백엔드 개발자 채용 공고에 지원하였고, 과제에서 탈락했다.
면접으로 가는 것에 실패했지만, 감사하게도 과제로 제출 한 것에 대한 피드백이 왔고 이것을 리뷰하고자 한다.
Setter로 인해 도메인 안정성이 깨질 가능성이 있습니다. 가급적 Setter는 지양해주시면 좋을 것 같습니다.
Setter를 사용하지 않는데 여러가지 이유가 있고, 그것을 나열하자면
의도를 파악하기 힘들다.
객체의 일관성을 유지하기 어렵다
도메인 로직의 분산
Setter는 public으로 선언되고 사용
등이 있다.
1. 의도를 파악하기 어렵다.
@Getter
@Setter
public class Order {
private UUID orderId;
private Item item;
private int quantity;
public Order(Item item, int quantity) {
this.orderId = UUID.randomUUID();
this.item = item;
this.quantity = quantity;
}
}
기본적으로 Setter는 public으로 사용할 수 있으며, 위와 같이 Setter를 사용하면 다른 곳에서도 setQuantity를 사용할 수 있다. 이때 여러 곳에서 Setter를 사용할 수 있게되며, 개발자가 데이터의 흐름을 알기 어려워지고 이는 곧 코드를 파악하고 리뷰하는데 오랜시간을 들일 수
대안
생성자 사용
빌더패턴 사용
도메인에 대한 지식이 부족해서 책을 더 읽고 추가 작성 중...
참조