chore: remove sample portfolio module
This commit is contained in:
@@ -17,15 +17,12 @@
|
||||
|
||||
### `ResourceId` — 모든 식별자가 구현하는 마커 인터페이스
|
||||
|
||||
시스템의 모든 리소스 식별자 값 객체(예: `WorkLogId`)가 구현하는 공통 인터페이스다.
|
||||
시스템의 모든 리소스 식별자 값 객체(예: `ArticleId`)가 구현하는 공통 인터페이스다.
|
||||
식별자의 실제 문자열 값은 `value()` 하나로 노출한다.
|
||||
|
||||
- **왜 `sealed` 로 닫지 않았나.** 원래 레퍼런스 설계는 `permits WorkLogId` 처럼 허용 구현을
|
||||
못 박는 닫힌 집합(`sealed`)으로 만들려 했다. 그런데 `WorkLogId` 같은 실제 식별자는
|
||||
`sample-portfolio`(샘플 코드)에 있고, 이 마커는 재사용 가능한 `domain-core`에 있다.
|
||||
`permits` 절을 쓰는 순간 `domain-core`가 `sample-portfolio`를 의존하게 되는데, 이건
|
||||
모듈 의존성 규칙과 `production_code_does_not_depend_on_sample_portfolio` ArchUnit 규칙이
|
||||
둘 다 금지하는 방향이다. 그래서 `sealed`을 포기했다.
|
||||
- **왜 `sealed` 로 닫지 않았나.** 실제 식별자 구현은 각 제품 도메인이 소유하고, 이 마커는
|
||||
재사용 가능한 `domain-core`에 있다. `permits` 절로 구체 구현을 못 박으면 `domain-core`가
|
||||
바깥 도메인 구현을 의존하게 되어 모듈 의존성 규칙을 거스른다. 그래서 `sealed`을 포기했다.
|
||||
- **그럼 "닫힌 집합" 보장은 어디서 하나.** `sealed`이 줬을 보장(아무 타입이나 식별자로
|
||||
쓰지 못하게 하는 것)은 대신 빌드 타임의 `no_long_id_pk` ArchUnit 규칙(D17)이 강제한다 —
|
||||
도메인의 모든 `id` 필드는 반드시 `ResourceId` 구현이어야 하고, 날것의 `Long` PK 는 금지된다.
|
||||
|
||||
Reference in New Issue
Block a user