134

在 Java Web 应用程序中设置包结构的最佳实践是什么?

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

4

7 回答 7

112

您可以按照 maven 的标准项目布局。您不必实际使用 maven,但它会使将来的过渡更容易(如有必要)。另外,其他开发人员会习惯于看到这种布局,因为许多开源项目都是这样布局的,

于 2008-10-16T22:54:25.040 回答
62

您可能会检查一些现有资源:

  1. 正确打包您的 Java 类
  2. Spring 2.5 架构
  3. Java 教程 - 命名包
  4. SUN 命名约定

对于它的价值,我自己倾向于使用的个人指导方针如下:

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

其他几点:

  1. 在我从事的项目中,包名称从设计文档中流出是很常见的。通常,产品已经分为功能或用途领域。
  2. 不要过分强调立即将通用功能推入更高的包。等待跨项目、产品等有需求,然后重构。
  3. 观察包间依赖关系。它们并不全是坏的,但它可以表示可能是单独的单元之间的紧密耦合。有一些工具可以帮助您跟踪这一点。
于 2008-10-17T01:32:55.267 回答
47

我建议按功能而不是按实现层创建您的包结构。对此的一个很好的描述是Java 实践:按功能打包,而不是按层打包

于 2010-07-31T22:23:01.013 回答
7
The way I usually organise is
- src
        - main
                - java
                - groovy
                - resources
        - test
                - java
                - groovy
- lib
- build
        - test 
                - reports
                - classes
- doc
于 2018-10-14T12:28:25.883 回答
6

我通常喜欢以下内容:

  • bin(二进制文件)
  • doc(文件)
  • inf(信息)
  • lib(库)
  • 资源(资源)
  • src (来源)
  • tst(测试)

这些可能被认为是非常规的,但我发现这是一种非常好的组织事物的方式。

于 2015-10-10T18:55:54.817 回答
3

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

  • 项目名
    • 源代码
    • 测试
    • 文档
于 2008-10-17T01:55:45.547 回答
3

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

在此处输入图像描述

于 2020-06-12T11:02:33.130 回答