Java 重用库类时的包命名
假设我正在使用一个库类,如Java 重用库类时的包命名,java,naming,Java,Naming,假设我正在使用一个库类,如library package.LibraryClass package library.package; class LibraryClass {} 我研究了它的实现,出于我的应用程序目的,我想稍微修改一下这个类,然后使用它。我的应用程序有包应用程序包 package application.package; class ApplicationClass {} 我应该如何命名该类LibraryClass应存储的包?我应该在我的项目库包中重用,还是应该使用schem
library package.LibraryClass
package library.package;
class LibraryClass {}
我研究了它的实现,出于我的应用程序目的,我想稍微修改一下这个类,然后使用它。我的应用程序有包应用程序包
package application.package;
class ApplicationClass {}
我应该如何命名该类LibraryClass
应存储的包?我应该在我的项目库包
中重用,还是应该使用scheme应用程序包.library包
,因为我记得我也遇到过这样的scheme
第一个
src\main\java\application\package
src\main\java\library\package
第二个
package application.package.library.package;
class LibraryClass {}
我认为这可能归结为观点,但让我们提取手头的事实:
- 从技术角度来看,它不应该有任何区别(除非您遇到冲突,因为该库的某些其他部分希望所有类都存在于这些库包中)
- 除此之外,您正在创建一些东西(碰巧基于某个第三方库)
由此得出:“自然”的解决方案是通过使用应用程序.package.library.package
命名约定来表达“您是这个类的所有者”。这取决于您希望使用什么
package my.tld.<lib-package>
我个人使用的方案如下:
tschallacka.magiccookies.util.math
tschallacka.magiccookies.util.time
tschallacka.magiccookies.graphics.model
等等
所以你有自己的“域名”tschallacka
然后是您的项目名称。在我的例子中,magiccookies
然后是它所属的组,这样您就可以很容易地找到相关的类。在本例中,util
用于我的实用程序类,而graphics
用于我的三维图形类
然后,我想通过为包中的工具类型添加特定的包来指定更多内容,math
用于数学相关类,time
用于日期和时间,model
用于我的所有图形模型帮助器函数
基本上,这取决于您,以及您希望用于组织代码的任何样式
大多数编码人员都遵循一些准则/约定
命名约定
包名用小写字母书写,以避免与
类或接口的名称
公司使用他们的反向互联网域名开始他们的业务
包名称,例如,com.example.mypackage,用于名为
由程序员在example.com上创建的mypackage
需要处理单个公司内发生的名称冲突
根据该公司的惯例,可能包括该地区或
公司名称后的项目名称(例如,
com.example.region.mypackage)
如果您正在拍摄一些开放源代码的“快照”以嵌入到您的项目中,那么一个常见的约定是“按原样”使用它,使用类似于:
package <lib-package>
包
Junit使用,但是这可能会导致问题,因为您的it本质上是一个fork,并且您绑定到一个特定的版本。如果使用以下约定,可以避免此问题
package my.tld.<lib-package>
包my.tld。
由于您看起来本质上是原始项目,我建议您使用相同的约定
而不是分叉,你应该考虑使用它,它将隔离你的bug修复、原始代码的更改和改进。