1

只是我,还是 Java 包命名约定中的 TLD 非常无关紧要?com.example.package我的意思是,如果您在和之间确实存在命名空间冲突org.example.package,而没有 TLD,那么对于 TLD,您无论如何都会感到困惑。为什么命名空间冲突的权衡混淆?肯定编译器吐出错误/警告比它兴高采烈地试图编译一个导入错误包的程序更好?

只是我在大会上的两分钱。坦率地说,你不会真的在 org.org 之间发生命名空间冲突。和 com。无论如何,两个同名的 java 包不太可能由具有相同域但不同 tld 的两家公司编写。

4

7 回答 7

1

不是com.ororg.对包名称很重要,只是“使用您公司的域名”是一个不错的简单经验法则。

于 2011-03-04T19:57:47.530 回答
1

有时它可能很重要,但主要是声望而不是实际的工程原因。它可以比作画家在画角的签名,上面写着“我做了这个。”,当你表达你的担忧和/或意见时,它会让你引人注目。

举个例子,当Apache Software FoundationJCP辞职时,每个人都知道这对他们工作的直接影响,因为他们使用的所有外部 3rd 方库都包含该域:拥有大量org.apache.*导入的人知道他们真的应该倾听公告并开始密切关注它,因为它最终会影响他们。

同样,您可以利用贵公司的良好声誉来宣传图书馆;如果我要向您宣传来自某个随机方的一组馆藏图书馆,哪个听起来更好,那个在下面common.collect还是那个在下面com.google.common.collect

将域部分添加到包中与实际实践几乎没有关系,它是关于承担责任并为自己的身份和所做的事情感到自豪。它关乎开放,关乎分享,关乎成为社区的一员,关乎成为全球 1300 万左右软件开发人员中的一员

于 2011-03-04T20:12:21.193 回答
0

我只是在编写软件时忽略它,但 TLD 确实有助于使包独一无二。

于 2011-03-04T19:54:35.850 回答
0

就像你说的,这只是一个约定。它的设计不是完美的。域可以易手,这也会导致冲突。

于 2011-03-04T19:55:38.173 回答
0

如果您的包不是库(或者它们只是您自己公司的库),那么它们永远不会被淘汰,因此您不必遵循任何包协议。事实上,在独立应用程序中,我只使用一个简短的包名称并将所有内容都粘贴在其中。如果它们使用相同的包声明,这将简化来自不同程序的常用文件的差异或校验和。这是我发布的一个问题:Generic Java Package Name

于 2011-03-04T19:59:06.650 回答
0

不。

证明:存在另一种非常流行的语言,有很多库,都在简单的命名空间下。他们没有名字冲突的问题。

于 2011-03-04T20:17:45.010 回答
0

我问了一个关于包名的问题,Jon Skeet(不管那个人是谁)有一个很好的评论要说

来自:Java 包中的连字符公司名称

老实说,我希望 Java 在约定方面没有走这条路。我想知道有多少名为“com”或“org”的目录只有一个成员——一个名称更有意义的子目录。

于 2011-03-04T21:19:27.210 回答