ディレクトリ構成についての整理
操作ロジックはコロケーションで、ドメインロジックはデコロケーションを意識したらいい?
永遠に悩んでる。関心ごとや責務を別の場所に分離するとソースが読みにくい気がしている。
code:例: ユーザー管理 + 注文管理システム
app/
├── user/ # ユーザーフロー単位でコロケーション
│ ├── register/
│ │ ├── controller.py # API/フローの入り口
│ │ ├── service.py # 処理手順の管理
│ │ └── test_register_flow.py # フロー統合テスト
│ ├── update/
│ │ ├── controller.py
│ │ ├── service.py
│ │ └── test_update_flow.py
│ └── delete/
│ ├── controller.py
│ ├── service.py
│ └── test_delete_flow.py
│
├── order/ # 別ドメイン(注文管理)フロー
│ ├── create/
│ │ ├── controller.py
│ │ ├── service.py
│ │ └── test_create_flow.py
│ ├── update/
│ │ ├── controller.py
│ │ ├── service.py
│ │ └── test_update_flow.py
│ └── cancel/
│ ├── controller.py
│ ├── service.py
│ └── test_cancel_flow.py
│
├── domain/ # 中核ドメインロジックをデコロケーション
│ ├── user/
│ │ ├── entity.py # ユーザーの状態/属性定義
│ │ ├── validator.py # 入力バリデーション
│ │ ├── password_policy.py # パスワードルール
│ │ └── event_handler.py # ユーザー関連イベント
│ ├── order/
│ │ ├── entity.py # 注文の状態/属性定義
│ │ ├── validator.py # 注文バリデーション
│ │ └── event_handler.py # 注文イベント処理
│ └── shared/ # 複数ドメインで使う共通ロジック
│ ├── email_utils.py
│ ├── id_generator.py
│ └── date_utils.py
│
├── infra/ # インフラ層(DBや外部サービス)
│ ├── db.py
│ ├── email_client.py
│ └── payment_gateway.py
│
└── tests/
├── domain/
│ ├── user/
│ │ └── validator_test.py
│ └── order/
│ └── validator_test.py
└── integration/
├── user_flow_test.py
└── order_flow_test.py
https://gyazo.com/35392444b4c8535c420244acd3436633
これって、もしかしてレイヤードアーキテクチャか。
#ディレクトリ #プログラム