• ktlint를 사용한다.

  • kotest를 사용한다.

    • 인수테스트는 BehaviorSpec을 사용한다.
    • 단위테스트는 StringSpec을 사용한다.
  • 생성자 파라미터는 후행쉼표 + 개행을 작성한다.

  • 원시값 포장

    • 필요 시 원시값 포장을 한다.
    • 생성자 인자로 원시값을 넘긴다.
  • 애그리거트 루트라면 BaseRootEntity를 상속받는다.

    • 다른 애그리거트간 참조는 ID 를 참조를 한다.
  • 객체간 협력은 애그리거트 루트끼리만 소통한다.

  • AbstractAggregateRoot 클래스를 상속받은 클래스는 이벤트를 발행할 수 있다.

  • 변경감지를 사용하지 않고 명시적으로 save() 를 사용한다

    • 도메인 이벤트 발행을 위해 save()를 호출해야만 한다.
  • @ManyToOne 을 사용하지 않는다.