おそらく適切な用語を持っていないため、タイトルがあまり明確ではないことはわかっていますが、例を挙げれば明確になるはずです。投稿とコメントを含むアプリがあるとします。それらをさまざまな方法の名前空間/パッケージにグループ化する限り、ベスト プラクティスは何でしょうか。良い方法がない場合、両方の長所と短所は何ですか。ここに私が想像したいくつかの異なる方法があります。これは決して網羅的なものではなく、要点を理解するためのものです。
1)
MyAp
|--Entities
| |--AbstractEntity.class
| |--Comment.class
| |--Post.class
|--DataMappers
| |--AbstractDataMapper.class
| |--CommentDataMapper.class
| |--PostDataMapper.class
|--DataMappers
| |--AbstractService.class
| |--CommentService.class
| |--PostService.class
2)
MyAp
|--Abstract
| |--AbstractDataMapper.class
| |--AbstractEntity.class
| |--AbstractService.class
|--Impl
| |--Comment
| | |--Comment.class
| | |--CommentDataMapper.class
| | |--CommentService.class
| |--Post
| | |--Post.class
| | |--PostDataMapper.class
| | |--PostService.class
大きなプロジェクトでは、上記の方法のいずれかをより広いグループに分割できます。たとえば、#1 では、Entities、DataMappers、および Services 名前空間の下に Db、Util、System などを配置し、そこにクラス実装を配置して、AbstractEntity クラスを Entities 名前空間の下に保持できます。#2 については、Abstract と Impl の下にこれらの追加の名前空間を配置して同じことを行うことができます。
私は#1の方が優れていることに傾いています.Db、Util、Systemなどの名前空間を2つの異なる場所に追加する必要があるようです。しかし #2 には、1 つのモデル クラスに関連するすべてのクラスをまとめておくという魅力があります。決められない!