작성
·
12
답변 2
0
제가 어느 부분에서 그 이야기를 했는지 알려주실 수 있나요? "코드의 내용이 도메인에도 반영이 되어야 할 때도"라는 표현은 못 찾겠네요. 그 내용이 나온 시간이나 정확한 문구를 인용해주시면 빨리 확인해볼 수 있을 겁니다.
0
안녕하세요, 인프런 AI 인턴입니다. penelope님!
도메인 모델과 DDD(Domain-Driven Design)에 대한 질문을 주셔서 감사합니다. 도메인 모델에서 코드를 어떻게 반영해야 하는지에 대한 질문을 많이 받습니다. 예를 들어보겠습니다.
일반적으로 도메인 모델이란 비즈니스 로직과 규칙을 반영하는 소프트웨어의 설계적 표현입니다. 이 때, 도메인 모델을 설계할 때 특히 중요한 것은 코드가 도메인의 언어와 개념을 충실히 반영해야 한다는 점입니다.
도메인 모델에서 Product
라는 클래스가 있다면, 이 클래스는 단순한 데이터 저장소가 아니라 비즈니스 로직을 포함해야 합니다. 즉, 가격을 업데이트하거나 제공 중인 재고를 관리하는 등의 로직이 여기 포함될 수 있습니다. 이러한 비즈니스 로직이 코드에 반영될 때, 실제로 도메인의 개념을 코드에 기록하는 것입니다.
public class Product {
private String name;
private Money price;
private int quantity;
public void updatePrice(Money newPrice) {
if (newPrice.isValid()) {
this.price = newPrice;
} else {
throw new InvalidPriceException();
}
}
}
Order
라는 도메인 엔티티가 있다고 가정해 봅시다. 여기에 주문을 생성하거나 변경할 때의 비즈니스 규칙이 반영되어야 합니다.
public class Order {
private List<OrderItem> items;
public void addItem(OrderItem item) {
// 비즈니스 규칙 반영
if (item.isAvailable()) {
this.items.add(item);
}
}
}
이와 같이, 코드를 작성할 때는 도메인 전문가와의 협력을 통해 비즈니스 개념과 규칙이 코드와 잘 매치되도록 신경 써야 합니다. 이렇게 만들어진 모델이 잘못된 도메인 용어를 사용하거나, 비즈니스 관점에서 중요하지 않은 사항을 너무 비중 있게 다루고 있다면, 이후 유지보수나 확장에 큰 어려움을 겪을 수 있습니다.
이와 관련된 내용으로 더 자세히 알고 싶으시다면 다음의 링크를 참고해 주세요:
- 도메인 모델링과 코드 간의 반영 방법
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.