Java代码规范中的包名命名约定

8

可能是重复问题:
Java包名中的单词分隔符惯例是什么?

我想知道是否有一些适用于包含多个单词的包名的代码约定。例如,包名com.dreamcom.objectInterfaces。在这种情况下,驼峰命名法是否适用?


3
在Java包名中,单词之间的惯例分隔符是什么? - Beau Grantham
2
@BeauGrantham在链接中给出了正确的答案。我猜这会使这个问题成为重复问题。 - Chris Aldrich
很抱歉,这个问题实际上是另外两个问题的重复。 - Lampapos
3个回答

13

来自维基百科的Java包命名约定(已加重):

包通常使用分层命名模式进行定义,层次结构中的级别由句点(.)(发音为“点”)分隔。虽然命名层次结构中较低的包通常被称为相应层次结构中较高的包的“子包”,但几乎没有语义关系。Java语言规范建立了包命名约定,以避免两个已发布的包具有相同的名称的可能性。命名约定描述了如何创建唯一的包名称,以便广泛分发的包将具有唯一的命名空间。这使得包可以分别、轻松和自动地安装和编目。
通常情况下,包名称以组织的顶级域名开始,然后是组织的域名,然后是任何子域名,按照相反的顺序列出。然后,组织可以选择其包的特定名称。包名称应尽可能全部小写字符。
例如,如果加拿大的MySoft组织创建了一个用于处理分数的包,将该包命名为ca.mysoft.fractions可以将该分数包与另一个类似的由其他公司创建的包区分开来。如果德国公司MySoft也创建了一个分数包,但将其命名为de.mysoft.fractions,则这两个包中的类在唯一且单独的命名空间中定义。
有关消除歧义的包名称和在无法直接使用Internet域名作为包名称时命名包的规则的完整约定,请参见Java语言规范第7.7节。

参见:


惯例是不使用驼峰式大小写。我加粗了维基百科摘录的相关部分,以使其更明显。 - Matt Ball

1

惯例是始终使用小写。

JLS中这里提供了更多信息。


1

我不喜欢驼峰式的包名。对于一个包含多个单词的包名,我考虑以下几点:

  1. "com.dreamcom.interfaces" 不够好吗?

  2. "com.dreamcom.object.interfaces" 行得通吗?

如果不行,那么与其使用驼峰式,还不如考虑 "com.dreamcom.objectinterfaces"。

原因是包名反映了主机操作系统上的目录结构。在 Linux 上,"com.dreamcom.objectInterfaces" 和 "com.dreamcom.objectinterfaces" 是不同的,而在 Windows 上它们是相同的。


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