| 構築時検証 | 無効な値でインスタンスを作成できない | | 不変(Immutable) | 一度作成されたら変更できない | | 自己完結 | 他のエンティティへの参照を持たない | | ドメイン操作の集約 | その型に関連する操作をカプセル化 | | 引数の取り違え防止 | 同じプリミティブ型でも異なるドメイン型として区別 |
| 負の金額 | 正常系テストでは正の値しか使わない | | 引数の順序 | 両方とも文字列なので型エラーにならない | | 境界値 | 全ての組み合わせをテストすることは不可能 | | 単位の混同 | 両方とも数値なので計算は「正しく」動く |
| JSON/XMLシリアライズ | 標準フォーマットはプリミティブ型のみ | {"quantity": 5} | | データベース永続化 | RDBのカラム型はプリミティブ | INSERT INTO orders (quantity) VALUES (5) | | 外部API連携 | 外部システムはドメイン型を知らない | REST APIのリクエスト/レスポンス | | ログ出力 | 人間が読める形式が必要 | log::info!("注文数: {}", qty.value()) |
Domain Primitives 및 Always-Valid Domain Model의 설계 원칙을 기반으로 도메인 모델의 유형 안전성과 불변성을 보장하는 설계 및 구현을 지원합니다. 기본 유형의 남용을 방지하고 생성 시 검증, 불변성 및 자체 포함 기능을 갖춘 도메인별 유형을 설계합니다. 코드 검토, 새로운 구현 및 리팩토링 중에 사용됩니다. 대상 언어: Rust, TypeScript, Java. 다른 언어(Kotlin, Scala, Go, Python 등)에 적용 가능합니다. 트리거: "도메인 프리미티브를 생성하고 싶습니다", "항상 유효한 모델을 설계하고 싶습니다", "프리미티브 유형을 래핑하고 싶습니다", "구성 시 유효성을 검사하고 싶습니다", "타입으로 유효하지 않은 상태를 방지하고 싶습니다", "스마트 생성자 패턴" 등과 같은 요청에 의해 활성화됩니다. 출처: j5ik2o/okite-ai.