지름길 사용하기
의도적인 지름길에 대해서는 세심하게 합리적인 이유를 기록해둬야 한다.
유스케이스 간 모델 공유
여러 유스케이스가 같은 입출력모델 공유 시 결합이 생긴다.
즉, 단일 책임 원칙에서 변경할 이유가 여러 부분에서 발생하게 되므로 위반 사항 발생
유스케이스들이 기능적으로 묶여있을 때에는 공유 가능
특정 세부사항 변경이 두 유스케이스 모두에 영향이 가는 경우 해당
유스케이스가 독립적으로 진화해야 한다면 입출력모델을 처음부터 분리해야 한다.
도메인 엔티티를 입출력 모델로 사용
도메인 모델을 인커밍포트의 입출력 모델로 사용하면 도메인 모델에 존재하지 않는 정보를 유스케이스에서 필요로 한다고 도메인 모델에 추가해버릴 수 있다.
이 역시 단일 책임 원칙 위반이다.
유스케이스는 시간이 지나면서 간단하다가 복잡해져가므로, 처음엔 도메인 엔티티를 입력 모델로 사용하더라도 나중에는 독립적인 전용 입출력 모델으로 교체해야 한다.
인커밍 포트 건너뛰기
인커밍 어댑터와 애플리케이션 계층 사이의 추상화 계층을 줄임
특정 유스케이스를 구현하기 위해 어떤 서비스메서드를 호출해야할 지 알아야 하므로, 전용 인커밍 포트 사용할 때보다 진입점을 식별하기 어렵다.
아키엑처를 강제하는 옵션을 사용해 인커밍 어댑터가 인커밍 포트만 호출하게 하면 잘못된 서비스 호출 가능성을 없앨 수 있다.
애플리케이션 서비스 건너뛰기
어댑터 클래스가 직접 인커밍 포트 구현해 서비스를 대체
인커밍 어댑터와 아웃고잉 어댑터 사이의 모델을 공유해야 하는데, 이는 도메인 엔티티를 입출력 모델로 사용하게 된다.
어댑터에 도메인 로직을 두게 되면 도메인 로직이 흩어져 도메인 로직 찾거나 유지보수가 어려워진다.
유스케이스가 단순히 CRUD하는 것보다 많은 일을 하게 된다면 애플리케이션 서비스를 만들어야 한다.
Last updated