Java包中使用连字符的公司名称

59

假设你正在为BarBaz Incorporated的foo项目的核心模块工作。你的代码片段可能看起来像这样:

package com.barbaz.foo.core;

import com.barbaz.foo.util;
如果您公司网站的域名不是barbaz.com而是bar-baz.com,那么命名规则会是什么?

事实证明,在大楼的另一侧确实存在一小部分Java代码,尽管在我提问之后才了解到这一点。他们的方法是按照此示例格式采用com.bb.foo.*;,考虑到所有的遗留系统都是bbs、bbw、bbj、bbl等,这是有意义的。不过还是感谢您的回答! - corsiKa
我重新打开了这个问题,因为仔细考虑后,它并不是另一个问题的副本。那个问题是如何处理空格,而这个问题是如何处理连字符。 - corsiKa
5个回答

87

SUN时代的Java语言规范提出了一个建议的约定:

如果域名包含连字符或任何其他在标识符(§3.8)中不允许的特殊字符,请将其转换为下划线。

但这只是一个建议...


23
考虑到大多数Java建议不要在大多数标识符中使用下划线,这很有趣。 - corsiKa
根据这个,这是一个要求,而不是建议(JSR)?那不是正确的吗? https://blog.eisele.net/2010/09/hyphen-ussage-in-package-names.html - atom88

70

我刚刚查看了我的浏览器历史记录,在过去的两个月里,我没有访问任何带连字符的域名。因此,惯例是重新命名公司。

或者,也可以省略连字符,因为BazBaz永远不会在他们自己的代码中包含Baz=Baz的代码。


2
我认为董事会会对这种做法提出异议,但我也笑了! - corsiKa
1
很明显,只有提出问题的人才能接受答案。不幸的是... - root
3
“...重命名公司” - 没有提供太多帮助。 - ŁukaszBachman
13
LOL。引发了另一个Stackoverflow问题:“Eclipse重命名我的公司的快捷键是什么?ALT+Shift+R不起作用。” - ameenhere

18

我个人会直接去掉连字符。你可以改成下划线,但那看起来相当难看。

很不可能真的会和另一家同名公司发生冲突,即使两家公司都是科技公司,都使用Java,有多大几率会在同一个代码库中使用两者都创建的代码呢?

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


1
前几天我又遇到了这个问题(实际上我已经不在同一个地方了),然后我偶然发现了Oracle教程底部的便捷图表。根据回溯机器,它自2011年末以来就一直存在,也就是这个问题提出的一年后。底部的建议确实让我感到好奇! - corsiKa
4
这句话的意思是“哎呀,这看起来太丑了!说实话,我已经很久没见过包名里使用下划线了……”。 - Jon Skeet
4
我在一家公司工作,其官方法律实体名称中包含一个竖线字符。简直是地狱。 - Bassinator
我的高中在20多年后仍然在他们的域名中使用它。讽刺的是,它的全名没有连字符! - nsandersen
我的软件包只有主域名sel2in.translate...或者s2n.translate,除非有一家叫做s2n的公司也做我所做的事情...省略com。 - tgkprog

10

直接去掉连字符。软件包名称与网站名称无需匹配。更重要的是,公司生产的所有软件包之间保持一致性,并使用相同的基本软件包名称。


3
它还用于避免库中的命名空间冲突。如果barbaz.com使用了来自bar-baz.com(去掉了连字符)的库创建一个产品,可能会发生冲突。实际上这种情况非常不太可能发生,以至于可以笑掉大牙。 - Bill K
15
如果barbaz.com和bar-baz.com都在生产库,其中一个将会起诉另一个。 - Erick Robertson
经过进一步考虑,我不得不采纳Steve的建议并勾选复选框。请查看我在Jon Skeet的答案评论中提供的链接以了解原因。 - corsiKa
我对此没有任何抱怨。 - Erick Robertson

3

我从事许多与政府有关的工作,通常使用下划线,例如bar_baz。


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