你真的使用你的反向域在java中进行包命名吗?[已关闭]

2022-09-01 19:35:44

很久以前,我就认为,在java中,反转你拥有的用于包命名的域是愚蠢和尴尬的。

在项目中使用哪个进行包命名?


答案 1

一旦你理解了为什么这个惯例存在,它就不应该感到愚蠢或尴尬。

此方案执行两项重要操作:

  • 您的所有代码都包含在其他人不会与之冲突的包中。您拥有自己的域名,因此它是隔离的。如果我们没有这个约定,许多公司将有一个“实用程序”包,其中包含“StringUtil”,“MessageUtil”等类。如果您尝试使用其他人的代码,这些代码将很快发生冲突。

  • 它的“反向”性质使得顶级的类目录布局非常狭窄。如果你展开一个jar,你会看到“com”,“org”,“net”等,然后在每个组织/公司名称下。

(2021 年添加)如今,当这种类型的包命名用于第三方库时,这一点甚至更为重要,这些库在构建过程中以传递方式拉取,如果名称不是唯一的,则很容易发生冲突。如果每个人都遵守相同的惯例,就不会有意外的碰撞。

(2021 年添加)相同的命名约定可以用于应用商店上的应用程序 ID,以确保唯一性。

我们通常不会扩展jar,但在早期的java开发中,这很重要,因为人们使用扩展的dir结构来构建小程序。

但是,这现在很好,因为源代码dir结构具有非常“自上而下”的感觉。你从最通用的(com,org,net...)到不太通用的(公司名称)到更具体的(项目/产品/lib名称)。


答案 2

我实际上认为反向域名包命名是Java中更出色的约定之一。


推荐