我们假设我正在使用像library-package.LibraryClass
这样的库类。
package library.package;
class LibraryClass {}
我研究了它的实现,为了我的应用目的,我想稍微修改那个类,然后使用。我的应用程序包application-package
。
package application.package;
class ApplicationClass {}
如何命名应该存储该类LibraryClass
的包?我应该在我的项目library-package
中重用,还是应该使用方案application-package.library-package
,因为我记得我也遇到了这样的方案。
第一个
src\main\java\application\package
src\main\java\library\package
第二个
package application.package.library.package;
class LibraryClass {}
答案 0 :(得分:1)
我认为这可能归结为意见,但让我们提取手头的事实:
来自那里:“自然”的解决方案是使用application.package.library.package
命名约定来表达“你是这个类的所有者”。
答案 1 :(得分:1)
这取决于您希望使用的内容。
我个人使用的方案如下:
tschallacka.magiccookies.util.math
tschallacka.magiccookies.util.time
tschallacka.magiccookies.graphics.model
等...
因此,您拥有自己的“域名”tschallacka
然后是你的项目名称。就我而言magiccookies
然后是所有这一切的群体,因此您可以轻松找回相关的课程。在这种情况下,util
用于我的实用程序类,graphics
用于我的3d图形类。
然后我想通过为该包中的工具类型添加特定包来指定更多内容,math
用于数学相关类,time
用于日期和时间,model
用于我所有的图形模型辅助函数。
基本上,这取决于您,以及您希望用于组织代码的任何样式。
大多数程序员都有一些指导方针/惯例
命名约定
包名称全部小写,以避免与 类或接口的名称。
公司使用他们的反向互联网域名开始他们的 包名称 - 例如,com.example.mypackage用于名为的包 mypackage由example.com的程序员创建。
需要处理单个公司内发生的名称冲突 按照公约在该公司内部,也许包括该地区或 公司名称后面的项目名称(例如, com.example.region.mypackage)。
https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html
答案 2 :(得分:0)
如果您正在拍摄快照'一些开源代码嵌入到你的项目中然后一个共同的惯例是使用它'原样使用类似的东西:
package <lib-package>
Junit使用hamcrest执行此操作,但这可能会导致问题,因为它本质上是一个分支,并且您已绑定到特定版本。如果使用以下约定,则可以避免此问题。
package my.tld.<lib-package>
由于您似乎基本上是forking原始项目,我建议您使用相同的约定。
但是,您应该考虑使用Adapter Pattern而不是分叉,这将隔离原始代码中的错误修复,更改和改进。