如何将应用程序构造为多个项目,以及如何用Java命名包?

如何将应用程序构造为多个项目,以及如何用Java命名包?,java,structure,packages,Java,Structure,Packages,我想知道您是如何用Java设置项目的。例如,在我当前的工作项目中,一个有六年历史的J2EE应用程序,大约有200万LoC,我们在Eclipse中只有一个项目。包结构分为层,然后是域,因此如下所示。一个巨大的ant脚本正在从这个源文件夹构建不同的JAR 就我个人而言,我认为最好有多个项目,至少每一层都是这样。最近,我在玩一个类似这样的项目结构: Domainproject(仅包含所有其他项目所需的带注释的POJO) 数据层(仅持久性) 业务逻辑(服务) 演讲者 看法 这样,应该更容易交换组件。

我想知道您是如何用Java设置项目的。例如,在我当前的工作项目中,一个有六年历史的J2EE应用程序,大约有200万LoC,我们在Eclipse中只有一个项目。包结构分为层,然后是域,因此如下所示。一个巨大的ant脚本正在从这个源文件夹构建不同的JAR

就我个人而言,我认为最好有多个项目,至少每一层都是这样。最近,我在玩一个类似这样的项目结构:

  • Domainproject(仅包含所有其他项目所需的带注释的POJO)
  • 数据层(仅持久性)
  • 业务逻辑(服务)
  • 演讲者
  • 看法
这样,应该更容易交换组件。此外,当使用Maven这样的构建工具时,我可以将所有内容都放在存储库中,因此当我只在前端工作时,我可以将其余内容作为依赖项放在类路径中

这对你有意义吗?您是否使用了不同的方法,以及它们看起来如何?

此外,我还在努力正确命名我的包/项目。现在,上面的项目结构反映在包的名称中,例如de.myapp.view,它继续使用一些技术子文件夹,如internal或interfaces我在这里缺少的,我不知道如何正确地做到这一点,是对某个领域的区别。当项目变得更大时,最好能够识别特定的领域,同时识别技术细节,以便在项目中更容易地导航


这引出了我的第二个问题:您如何命名您的项目和包?您的方法很有意义。我通常会分解成一个模型(共享)、多个库,然后分解成使用这些代码和GUI的应用程序——所有这些都是单独的项目。我倾向于遵循实用主义程序员关于构建工具集的格言,而不是应用程序。这样你可以用很多不同的方式重新组装你的组件

每个库/应用程序都是自己的项目,有单元/功能测试和可交付成果(在您的情况下,是一个Maven工件,您可以适当地存储和版本)

唯一让人头疼的是管理这些组件之间的接口和链接。在这里,有效的集成测试环境是关键

这引出了我的第二个问题:如何解决 你有没有列出你的项目和计划 包裹

对于项目名称,我更喜欢像Longhorn=WinVista这样的内部名称。这个名字永远不会改变(就像我孩子的名字一样)。因此,营销等部门可以注册任何名称、重新命名等

包装是(个人)偏好和风格的问题。通常由高级程序员决定结构。当然,也有一些“标准”,比如UI类的“gui”、接口实现的“util”、“misc”、“impl”、域对象类的“domain”,等等,您应该一致地使用这些标准并表达您的风格