概要
どっちの名前がいい?
Domain.PersonService
DomainServices.PersonService
DomainServices.PersonDomainService
( のようないくつかの長い名前を検討してくださいPersonDomainServiceModelDecorator
)
または、他の何か?
状況
各レイヤーにいくつかの基本クラスがあるフレームワークがあります。元。リポジトリ、ドメイン サービス、UI など
各論理層には名前空間として使用される名前があります。
- リポジトリを含むデータ層の「データ」。元。
Fx.Data.DbContextRepository
- ドメイン (Web ではない) サービス層の「サービス」。元。
Fx.Services.CrudService
- Web UI レイヤーの「Web.UI」。元。
Fx.Web.UI.Controllers.CrudController
また、いくつかの追加レイヤーを含む最終プロジェクトについても同じルールに従います。
- 「データ」 例
Project.Data.PersonRepository
- 「サービス」例
Project.Services.PersonService
- 「Web.UI」例
Project.Web.UI.Controllers.PersonController
- コード優先エンティティの「エンティティ」。元。
Entities.Person
- オブジェクト モデルの「モデル」。元。Models.Person.Criteria、
Models.Person.PersonDeleteModel
私は「ドメイン サービス」層に焦点を当てていますが、他の層についてのアイデアも歓迎します。
最終的に、「サービス」は「ドメイン サービス」に適切な名前ではないという結論に達しました。これは、「Web サービス」レイヤーと「ドメイン サービス」レイヤーの間にあいまいさが生じる可能性があるためです。
ここで、"Services" 名前空間を "Domain" または "DomainServices" に変更しています。しかし、別の問題があります。すべてのドメイン サービス クラスに「サービス」サフィックスを付けます (例PersonService
)。「DomainService」という接尾辞 (例:DomainServices.PersonDomainServer
またはDomainServices.DomainPersonService
) を付けるのは醜いようです。
したがって、クラス名がドメイン名前空間の下のサービスであることを示しているときに、「ドメイン」を名前空間として使用する方がきれいな場合があります (例Domain.PersonService
)。