2011-03-04 89 views
1

它只是我,还是Java包命名约定中的TLD非常无关?我的意思是,如果您 - 如果您在com.example.packageorg.example.package之间发生名称空间冲突,而没有TLD,那么无论如何您对TLD都有困惑。为什么要权衡名称空间冲突的混淆?当然,编译器吐出一个错误/警告比它愉快地尝试编译某个导入了错误软件包的程序好得多?Java包命名方案:顶级域名真的很重要吗?

只是我在会议上的两分钱。坦率地说,你不会在org之间有命名空间冲突。和com。无论如何,因为两个同名域名的java包将由两个具有相同域但不同tld的公司编写。

回答

0

我问一个关于包名的问题,乔恩斯基特(​​谁那家伙)有一个很好的评论说

来自:Hyphenated company name in Java packages

说实话,我希望Java的hadn”根据 约定,这条道路走下坡路。我想知道有多少个 目录名为“com”或“org” 与单个成员存在 - 一个 子目录具有更有意义的 名称。

+0

提出了一个有效的观点 - 这个约定影响目录以及导入声明(我在原始文章中忽略了这一点)。当面对一个装满软件包的目录时,我必须先选择com/org /,如果我不明确知道软件包使用哪个TLD,我该如何找到它?当然,这并不会影响开发者,因为它大部分是由工具来处理的,但我相信这种情况最终会出现...... – 2011-03-04 22:33:54

0

编码软件时,我只是忽略它,但TLD确实有助于使包具有独特性。

0

就像你说的那样,这只是一个约定。它不是完美的;域名可能会转手,这也会导致冲突。

1

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

+0

当然,它表面上很好很简单,但我仍然认为'com.example.package' vs'org.example.package'在发生这种冲突时很可能会产生混淆。事实上,这不可能使TLD变得无关紧要,但冲突造成的混乱更是导致移除的原因。 – 2011-03-04 22:30:06

0

如果你的软件包不是库(或者它们只是你自己公司的库),那么它们永远不会退出,因此你不必遵循任何软件包协议。实际上,在独立应用程序中,我只使用一个简短的软件包名称,并将所有内容都放在其中。如果它们使用相同的包装声明,则可以简化差异检验常用文件的分析或校验。这里是我发布的一个问题:Generic Java Package Name

1

有时它可能很重要,但主要是它比威望实际工程原因更多。它可以与绘画角落画家的签名相比较,比如说“我做了这个”,这可以让你在你表达你的关注点和/或意见时变得显着。

作为这方面的一个例子,当Apache Software Foundation resignedJCP,每个人都知道这对他们的工作,因为他们使用的所有外部的第三方库的直接影响包含域:有很多org.apache.*进口的人们知道,他们应该真正开放为了宣布并开始密切关注它,因为它最终会影响他们。

同样,您可以使用贵公司的良好声誉来宣传该图书馆;如果我想给一些随机派对收藏库做广告,哪一个听起来会更好,那么在common.collect之下或者com.google.common.collect之下呢?

将域名部分添加到包中几乎与实际操作无关,这是关于承担责任并为您的所作所为以及您的所作所为感到自豪。这是关于开放,关于共享,关于成为社区的一部分,关于在全球所有软件开发人员中的1300万左右,你需要的是。

+1

关键是为什么com? 'google.common.collect'确实没有那么好的声誉? – corsiKa 2011-03-04 21:18:12

+0

@ glowcoder:更一般地思考,TLD之间可能存在重大差异,可能会完全误导。读一个像魔鬼的倡导者这样的例子绝对不会对你有任何好处。 – Esko 2011-03-04 21:48:08

+0

@glowcoder正好。正如我在OP中指出的那样,“com.google.common.collect”和“org.google.common.collect”是具有不同命名空间(但名称空间名称相似)的竞争库,可能会使开发人员感到困惑。 – 2011-03-04 21:58:09

0

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