包名称中应如何单独使用一个单词?以下哪项是正确的?
com.stackoverflow.my_package
(下划线)com.stackoverflow.my-package
(连字符)com.stackoverflow.MyPackage
(骆驼香烟盒)
一般标准是什么?
包名称中应如何单独使用一个单词?以下哪项是正确的?
com.stackoverflow.my_package
(下划线)com.stackoverflow.my-package
(连字符)com.stackoverflow.MyPackage
(骆驼香烟盒)一般标准是什么?
Answers:
这是官方命名约定文件规定的内容:
配套
独特的包名的前缀总是全部小写的ASCII字母,应该是顶级域名之一,目前
com
,edu
,gov
,mil
,net
,org
,或符合ISO确定哪些国家的英文两字母代码之一标准3166,1981年。包名称的后续组件根据组织内部的内部命名约定而有所不同。这样的约定可能指定某些目录名称组成部分是部门,部门,项目,计算机或登录名。
例子
com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
请注意,上面的文档没有特别指定顶级域名前缀后面的任何内容。JLS也通过给出以下示例对此表示同意:
com.sun.sunsoft.DOE
gov.whitehouse.socks.mousefinder
com.JavaSoft.jag.Oak
org.npr.pledge.driver
uk.ac.city.rugby.game
以下摘录也很重要:
在某些情况下,互联网域名可能不是有效的软件包名称。以下是处理这些情况的一些建议约定:
- 如果域名包含连字符或标识符中不允许的任何其他特殊字符,请将其转换为下划线。
- 如果结果包名称的任何组成部分是关键字,则在它们后面加上下划线。
- 如果任何结果包名称组件以数字开头,或者任何其他不允许作为标识符的初始字符的字符开头,则在组件的前缀下划线。
这三个都不是惯例。
使用com.stackoverflow.mypackage
。
该软件包名称不遵循骆驼套管或下划线或连字符包命名约定。
另外,《Google Java样式指南》指定了完全相同的com.stackoverflow.mypackage
约定(即):
5.2.1软件包名称
软件包名称均为小写字母,连续的单词简单地串联在一起(没有下划线)。例如
com.example.deepspace
,不是com.example.deepSpace
或com.example.deep_space
。
任何人都可以使用下划线_(可以)
任何人都不应使用连字符- (它的坏的做法)
没人可以在包裹名称中使用大写字母(错误做法)
注意:此处的“不良做法”是指从技术上讲,您可以使用该做法,但按惯例,这样做的方式不好。
资料来源:命名套件(docs.oracle)
官方的命名约定不是那么严格,除了前缀(com
在您的示例中)之外,它们甚至没有“禁止”驼峰大小写表示法。
但是我个人会避免使用大写字母和连字符,甚至是数字。我也会选择com.stackoverflow.mypackage
Bragboy建议的。
(包名中的连字符“-”不合法)
编辑
有趣的是-语言规范也有关于命名约定的内容。
在第7.7章“唯一程序包名称”中,我们看到带有由大写字母组成的程序包名称的示例(这样CamelCase表示法就可以了),并且建议用下划线(“ mary-lou”->“ mary_lou”)替换hyphonion,并使用前缀java带下划线的关键字(“ com.example.enum”->“ com.example._enum”)
有关软件包名称中大写字母的更多示例,请参见章节6.8.1软件包名称。
下划线在程序包名称中看起来很难看。出于价值考虑,如果名称包含三个或三个以上的单词,我将使用缩写(例如:)com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
,然后在中记录包装目的package-info.java
。
com.stackoverflow.my.package