我知道标题可能不太清楚,因为我可能没有正确的术语,但一个例子应该清楚。假设我有一个带有帖子和评论的应用程序,那么将它们分组到各种方式的命名空间/包中的最佳实践是什么。如果没有更好的方法,两者的优点和缺点是什么。以下是我设想的几种不同方式,请注意,这绝不是详尽无遗的,只是为了说明这一点:
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 具有将与一个模型类相关的所有类保持在一起的吸引力。拿不定主意!