Skip to main content

도메인 주도 개발 시작하기 - 최범균

1장 - 도메인 모델 시작하기

  • 도메인 모델 패턴이란 도메인 규칙들을 객체 지향 기법으로 구현하는 패턴.
    • 도메인 규칙은 도메인 계층에서 구현되는 핵심 규칙들. ex) 출고 전에 배송지를 변경할 수 있다. , 주문 취소는 배송 전에만 할 수 있다. 등의 규칙.
  • 도메인을 이해하면서 ( 기획, 디자인, 유스케이스 등의 파악을 통해 ) 변수명, 메소드명을 구체적으로 지정한다. (ex. isShippingChangeable -> verifyNotYetShipped )
    • 이런 메소드명, 변수명 구체화를 통해 도메인 지식이 코드에 잘 묻어나도록 작성하면 코드의 동작 과정에 대한 이해뿐만 아니라 도메인 관점에서 이해하는데 도움이 된다.
  • 엔티티와 밸류
    • 엔터티는 식별자를 가진다.
    • 밸류는 개념적으로 완전한 하나를 표현할 때 사용.
      • 밸류를 사용하면 의미를 명확하게 표현할 수 있다.
        • 예를들어 price 변수를 int로 타입을 지정할 수도있지만 Money 객체를 만들어 표시하면 price가 돈을 의미한 다는 것을 쉽게 알 수 있다.
      • 밸류 타입의 또 다른 장점은 밸류 타입을 위한 기능을 추가할 수 있다.
        • Monye 타입은 돈계산등을 위한 기능을 추가할 수 있다.
      • 밸류 객체는 불변 타입을 선호한다. (안전하게 코드를 작성할 수 있기 때문이다.)
  • 유비쿼터스 언어
    • 적절한 도메인 용어로 값을 정하는 것은 아주 중요하다. 변수명, 메소드명을 정하는데 시간을 아까워하지 말자.

2장 - 아키텍처 개요

  • 표현 <-> 응용 <-> 도메인 <-> 인스라스트럭처
  • DIP (의존성주입원칙)을 활용해 저수준 모듈이 고수준 모듈에 의존하도록 함으로서 구현 교체를 용이하게하고(변경에 용이) 테스트를 용이하게 한다.
    • 테스트가 용이해지는 이유는 DIP를 사용하면 추상화를 통해 가운데 인터페이스가 생기게 되고 테스트 시점에 해당 인터페이스를 대역 테스트 모의 객체를 넣어줌으로써 저수준의 동작과 관계없이 고수준 모듈을 테스트할 수 있게 되기 때문이다.