Java 项目的包结构?

在 JavaWebApplication 中设置包结构的最佳实践是什么?

如何设置 src、单元测试代码等?

201853 次浏览

你可以追踪 Maven 的 标准工程设计图标准工程设计图。实际上您不必使用 maven,但是它将使转换在将来变得更容易(如果必要的话)。另外,其他开发人员将习惯于看到这种布局,因为许多开源项目都是这样布局的,

您可以检查一些现有的资源:

  1. 正确打包 Java 类
  2. Spring 2.5架构
  3. Java 教程-包的命名
  4. 太阳命名公约

不管怎样,我个人的指导方针是这样的:

  1. 从反向域开始,例如“ com.mycompany”。
  2. 使用产品名称,例如“ myproduct”。在某些情况下,我倾向于使用不属于特定产品的通用包。这些最终会根据这些常见类的功能进行分类,例如“ io”、“ util”、“ ui”等。
  3. 这之后,它变得更加自由的形式。通常我根据项目、功能领域、部署等进行分组。例如,我可能有“ project1”、“ project2”、“ ui”、“ client”等等。

还有几点:

  1. 在我所从事的包名从设计文档流出的项目中,这种情况很常见。通常,产品已经被划分为功能性或用途领域。
  2. 不要过分强调立即将公共功能推入更高的包中。等待需要跨项目、产品等,然后重构。
  3. 观察包之间的依赖关系。它们并不都是坏的,但它可能意味着可能是独立单元之间的紧密耦合。有一些工具可以帮助您跟踪这一点。

我通常的方式有我的文件夹层次结构-

  • 项目名称
    • Src
    • 垃圾箱
    • 测试
    • Libs
    • 医生

我建议按照特性创建包结构,而不是按照实现层。关于这个的一篇好文章是 Java 实践: 按特性打包,而不是按层打包

我通常喜欢以下的:

  • 箱(二进制文件)
  • Doc (文件)
  • Inf (信息)
  • Lib (图书馆)
  • 参考资料(参考资料)
  • Src (资料来源)
  • 测试(测试)

这些可能被认为是非传统的,但我发现这是一个非常好的方式来组织事情。

The way I usually organise is
- src
- main
- java
- groovy
- resources
- test
- java
- groovy
- lib
- build
- test
- reports
- classes
- doc

另一种方法是将 API、服务和实体分离到不同的包中。

enter image description here