layout: post
title: "도메인에서 Setter 사용을 지양하는 이유"
date: 2022-02-10T00:00:00-00:00
author: sangyeop
categories: Spring
내가 이해한 방식으로 설명하자면 이렇다
하나의 예시를 들어보면 이해에 도움이 된다.
다음은 setter를 사용해서 직접 호출부분에서 setter를 통해서 값을 바꿔주는 모습이다. setStatus()
메서드를 통해서 false
로 값을 바꿔주는 것 만으로는 해당 값 변경이 어떤 목적으로 이루어지는지 파악하기가 어렵다.
public class Order {
public void setStatus(boolean status) {
this.status = status;
}
}
public void 주문서비스의_취소이벤트() {
order.setStatus(false);
}
그러나 다음과 같이 별도의 메서드를 선언하여 setter대신 값을 바꿔주게 된다면, 메서드명에 그 의도가 분명하게 드러나고 도메인 안에서 값 변경이 이루어지기 때문에 변경 부분을 파악하는데도 훨씬 용이해진다.
public class Order {
public void cancelOrder() {
this.status = false;
}
}
public void 주문서비스의_취소이벤트() {
order.cancelOrder();
}