2010-09-09 95 views
31

假设您正在致力于BarBaz Incorporated的foo项目的核心模块。您的代码片段可能是这样的:Java包中的公司名称

package com.barbaz.foo.core; 

import com.barbaz.foo.util; 

将公约是如果你的公司的网站是不是barbaz.com,而是bar-baz.com

+0

因此,原来存在的建筑物的另一端Java发生量小,虽然我没有发现这一点,直到我问了之后题。按照这个例子的格式,他们的方法是'com.bb.foo。*;',考虑到所有的遗留系统是bbs,bbw,bbj,bbl和什么都不是,这是合理的。感谢您的输入! – corsiKa 2010-09-09 16:42:08

回答

47

Java Language Spec给出了一个建议的约定:

如果域名包含连字符,或任何其他特殊字符的标识符不允许(第3.8节),将其转换成一个下划线。

但它只是一个建议...

+11

这很有趣,考虑了大多数Java建议如何建议不要在大多数标识符中使用下划线。 – corsiKa 2010-10-19 00:09:48

7

只需放下连字符即可。包名称根本不需要匹配网站名称。更重要的是,公司生产的包装之间具有一致性,因此它们都使用相同的基本包装名称。

+0

它也用于避免库中的命名空间冲突。如果barbaz.com使用bar-baz.com的图书馆(谁删除了连字符)创建了一个产品,则可能会有冲突。在实践中,这是不太可笑的。 – 2010-09-09 16:35:58

+11

如果barbaz.com和bar-baz.com都在制作图书馆,其中一个会起诉另一个图书馆。 – 2010-09-09 17:00:45

+0

经过进一步考虑,我不得不将复选框给Steve的建议。查看我对Jon Skeet回答为什么的评论中的链接。 – corsiKa 2013-10-18 16:54:27

13

我个人只是删除连字符。你可能改变成一个下划线,但这看起来很丑。

这是非常不可能的,它的真的将与另一家公司同名减去连字符冲突。即使两家公司都是科技公司,都使用Java,那么任何人都有可能使用由他们两人在同一代码库中创建的代码?

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

+0

所以我再次遇到了这一天(我实际上不在同一个地方了),我偶然发现了一个[Oracle教程,底部有一个方便的图表](http://docs.oracle.com/javase /tutorial/java/package/namingpkgs.html)。根据回机器的说法,它[自2011年底以来一直存在](http://web.archive.org/web/20111117054510/http://docs.oracle.com/javase/tutorial/java/package/namingpkgs。 HTML),在这个问题后一年。底部的建议确实让我感到惊讶! – corsiKa 2013-10-18 16:53:33

+2

@corsiKa:Ick。对我来说看起来非常丑陋!我不记得上次我在包名中看到下划线,说实话... – 2013-10-18 16:54:26

2

我在很多政府部门工作,我们通常使用下划线bar_baz。

42

我刚刚查看了浏览器的历史记录,在过去的2个月中,我还没有访问带连字符的单个域。因此,公约将重新命名公司。

或者,不要使用连字符,因为BazBaz不会在其自身中包含Baz = Baz的代码。

+3

太棒了。我喜欢。 – 2010-09-09 16:31:03

+0

我认为董事会会采取这种方法,但我也乐此不疲! – corsiKa 2010-09-09 16:36:34

+0

显然,只有提问者可以接受答案。不幸的是... – root 2013-07-02 19:33:12