正确的Java包层次结构是什么?

3

我刚开始研究新的FIRST Robotics Java SDK,它包括项目生成器来构建样例机器人程序。

我很好奇的一点是,它生成的文件以此开头:

package edu.wpi.first.wpilibj.templates;

这真的有意义吗?(我使用的库来自first.wpi.edu,但我的项目实际上与他们没有任何关联。)我认为我应该使用自己的反向域名作为包规范符号。

你有什么想法?

5个回答

6

我认为你的直觉是正确的。我个人会将其重构为自己的包。这只是一个生成的教程项目,还是你即将要开展工作的项目?如果这不是教程项目,那么当创建时没有覆盖包名称的方法时,我会感到惊讶。


实际上它确实提供了一个选择包名称的选项,但那是默认设置,我正在尝试弄清楚是否要更改它。 - Sophie Alpert

1

这个想法是包名应该是全局唯一的。


0

我认为它会在客户提供的包名中生成一些东西。例如:询问用户想要使用哪个包。

它会在多个包中生成吗?


(请参见Jay的答案上的评论。) - Sophie Alpert

0

它可能这样做是为了访问“包本地”类。


0
使用您自己的反向域名是最合理的选择。Java语言规范(JLS)指出,标准包命名结构的目的是避免具有相同名称的不同发布包。通过使用您自己的域名,您可以确保您的包不会与按照标准包命名约定发布的其他包发生冲突。如果您使用别人的域名,则存在包命名冲突的风险。
JLS的相关部分:
程序员应该采取措施避免两个已发布的软件包具有相同的名称,通过选择广泛分发的软件包的唯一名称来实现。这样可以轻松自动地安装和分类软件包。本节指定了一种建议的约定来生成这样独特的软件包名称。如果不使用唯一的软件包名称,则可能会在冲突软件包的创建点远处出现软件包名称冲突。这可能会创建一个对用户或程序员难以解决的情况。您可以通过首先拥有(或属于拥有)互联网域名(例如oracle.com)来形成唯一的软件包名称。然后,将此名称逐个组件地反转,以获得com.oracle,在您的组织内使用开发的约定进一步管理软件包名称,并将其用作软件包名称的前缀。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接