您在Java项目中使用什么策略来命名包?为什么?
我在一段时间前就想到了这一点,最近当我的商店正在开发第一款真正的Java web应用程序时,它又重新出现了 作为介绍,我看到了两种主要的包命名策略。(要清楚,我不是指整个“domain.company.project”部分,我指的是下面的包约定。)总之,我看到的包命名约定如下:您在Java项目中使用什么策略来命名包?为什么?,java,naming-conventions,packages,Java,Naming Conventions,Packages,我在一段时间前就想到了这一点,最近当我的商店正在开发第一款真正的Java web应用程序时,它又重新出现了 作为介绍,我看到了两种主要的包命名策略。(要清楚,我不是指整个“domain.company.project”部分,我指的是下面的包约定。)总之,我看到的包命名约定如下: 功能性:根据软件包的体系结构功能来命名软件包,而不是根据业务域来命名软件包。另一个术语可能是根据“层”命名。因此,您将有一个*.ui包、一个*.domain包和一个*.orm包。您的包是水平切片而不是垂直切片 这比逻辑命
因此,我想问题会摆在你面前,你如何命名你的包裹,为什么?请理解,我不一定认为我在这里偶然发现了金鹅或其他东西。我对这一切都很陌生,大部分是学术经验。然而,我无法发现我推理中的漏洞,所以我希望你们都能发现,这样我就可以继续了。这取决于逻辑过程的粒度 如果它们是独立的,您通常会在源代码管理中为它们创建一个新项目,而不是一个新包 我目前正在进行的项目正朝着逻辑拆分的方向发展,有一个用于jython方面的包,一个用于规则引擎的包,一个用于foo、bar、binglewozzle等的包。我正在考虑为该包中的每个模块提供特定于XML的解析器/编写器,而不是一个XML包(我以前已经做过),尽管仍然会有一个核心XML包,其中包含共享逻辑。然而,这样做的一个原因是,它可能是可扩展的(插件),因此每个插件还需要定义其XML(或数据库等)代码,因此将其集中化可能会在以后引入问题 最后,这似乎是对特定项目最合理的方式。然而,我认为按照典型的项目分层图进行打包是很容易的。最终,您将得到逻辑和功能组合的包装 需要的是标记名称空间。某些Jython功能的XML解析器可以同时标记Jython和XML,而不必选择其中之一
或者可能我正在wibbling。我处理过的大多数java项目都是先从功能上切片java包,然后从逻辑上切片 通常零件都足够大,以至于它们被分解成许多块
com.company.appname.presentation.internal
com.company.appname.presentation.springmvc.product
com.company.appname.presentation.servlet
...
com.company.appname.application.lookupproduct
com.company.appname.application.internal.lookupproduct
com.company.appname.application.editclient
com.company.appname.application.internal.editclient
...
com.company.appname.service.clientservice
com.company.appname.service.internal.jmsclientservice
com.company.appname.service.internal.xmlclientservice
com.company.appname.service.productservice
...
com.company.appname.integration.jmsgateway
com.company.appname.integration.internal.mqjmsgateway
com.company.appname.integration.productdao
com.company.appname.integration.internal.dbproductdao
com.company.appname.integration.internal.mockproductdao
...