지름길 사용하기

의도적인 지름길에 대해서는 세심하게 합리적인 이유를 기록해둬야 한다.

유스케이스 간 모델 공유

  • 여러 유스케이스가 같은 입출력모델 공유 시 결합이 생긴다.

  • 즉, 단일 책임 원칙에서 변경할 이유가 여러 부분에서 발생하게 되므로 위반 사항 발생

  • 유스케이스들이 기능적으로 묶여있을 때에는 공유 가능

    • 특정 세부사항 변경이 두 유스케이스 모두에 영향이 가는 경우 해당

  • 유스케이스가 독립적으로 진화해야 한다면 입출력모델을 처음부터 분리해야 한다.

도메인 엔티티를 입출력 모델로 사용

  • 도메인 모델을 인커밍포트의 입출력 모델로 사용하면 도메인 모델에 존재하지 않는 정보를 유스케이스에서 필요로 한다고 도메인 모델에 추가해버릴 수 있다.

  • 이 역시 단일 책임 원칙 위반이다.

  • 유스케이스는 시간이 지나면서 간단하다가 복잡해져가므로, 처음엔 도메인 엔티티를 입력 모델로 사용하더라도 나중에는 독립적인 전용 입출력 모델으로 교체해야 한다.

인커밍 포트 건너뛰기

  • 인커밍 어댑터와 애플리케이션 계층 사이의 추상화 계층을 줄임

  • 특정 유스케이스를 구현하기 위해 어떤 서비스메서드를 호출해야할 지 알아야 하므로, 전용 인커밍 포트 사용할 때보다 진입점을 식별하기 어렵다.

  • 아키엑처를 강제하는 옵션을 사용해 인커밍 어댑터가 인커밍 포트만 호출하게 하면 잘못된 서비스 호출 가능성을 없앨 수 있다.

애플리케이션 서비스 건너뛰기

  • 어댑터 클래스가 직접 인커밍 포트 구현해 서비스를 대체

  • 인커밍 어댑터와 아웃고잉 어댑터 사이의 모델을 공유해야 하는데, 이는 도메인 엔티티를 입출력 모델로 사용하게 된다.

  • 어댑터에 도메인 로직을 두게 되면 도메인 로직이 흩어져 도메인 로직 찾거나 유지보수가 어려워진다.

  • 유스케이스가 단순히 CRUD하는 것보다 많은 일을 하게 된다면 애플리케이션 서비스를 만들어야 한다.

Last updated