Closed ktaroabobon closed 4 months ago
クリーンアーキテクチャに従う構成にする
クリーンアーキテクチャを採用する場合、プロジェクトのディレクトリ構造は以下のように整理されます。クリーンアーキテクチャの基本的な原則は、コードを分離して、依存関係が一方向になるようにすることです。以下は一般的なディレクトリ構造の提案です。
/abobonjr
├── cmd
│ └── app
│ └── main.go
├── config
│ └── config.go
├── internal
│ ├── adapters
│ │ ├── controllers
│ │ │ └── discord_controller.go
│ │ ├── database
│ │ │ ├── mysql
│ │ │ │ └── mysql.go
│ ├── domain
│ │ ├── models
│ │ │ └── user.go
│ │ ├── repositories
│ │ │ └── user_repository.go
│ ├── services
│ │ ├── user_service.go
│ └── utils
│ └── logger.go
├── migrations
│ └── 0001_create_users_table.sql
├── Dockerfile
├── docker-compose.yml
└── go.mod
ディレクトリおよびファイルの説明
ありがとうございます。できる限り依存関係を一方向にしたいのとそれぞれのファイルの関心ごとをしっかりと分割したいです。その点に関してあなたの提示してくれた構成の説明をしてください
以下に、依存関係の一方向性と関心ごとの分割を考慮した構成の詳細説明を行います。
cmd/app:
config:
internal:
adapters:
domain:
services:
utils:
migrations:
cmd -> config:
cmd -> internal/adapters/controllers -> internal/services:
internal/services -> internal/domain/repositories:
internal/domain/repositories -> internal/adapters/database:
internal/adapters/database:
この構成により、各層はそれぞれの責務に集中でき、依存関係が一方向に保たれます。また、変更が発生した場合でも、他の層に影響を及ぼさずに対応できるため、保守性が高まります。
a. 各レイヤーの依存関係を確認し、適切なインターフェースを定義する。 b. テストコードを追加し、各レイヤーの機能を検証する。
概要