在包名中如何区分单词?下列哪个选项是正确的?
com.stackoverflow.my_package
Snake Case
com.stackoverflow.my-package
Kebab Case
com.stackoverflow.myPackage
Camel Case
com.stackoverflow.MyPackage
Pascal Case
一般标准是什么?
这三个都不是惯例。
使用com.stackoverflow.mypackage。
com.stackoverflow.mypackage
包名不跟在驼峰大小写、下划线或连字符包命名约定后面。
另外,谷歌Java风格指南指定了完全相同的(即com.stackoverflow.mypackage)约定:
5.2.1包名 包名都是小写的,连续的单词简单地连接在一起(没有下划线)。例如,com.example.deepspace, 不, com.example.deepSpace或com.example.deep_space。 ——谷歌Java风格指南:5.2按标识符类型划分规则:5.2.1包名。
包名都是小写的,连续的单词简单地连接在一起(没有下划线)。例如,com.example.deepspace, 不, com.example.deepSpace或com.example.deep_space。
com.example.deepspace
com.example.deepSpace
com.example.deep_space
——谷歌Java风格指南:5.2按标识符类型划分规则:5.2.1包名。
官方的命名约定并没有那么严格,除了前缀(在你的例子中是com)之外,他们甚至没有“禁止”驼峰大小写符号。
com
但我个人会避免大写字母和断字,偶数。我也会像Bragboy建议的那样选择com.stackoverflow.mypackage。
(连字符“-”在包名中是不合法的)
编辑
有趣的是,语言规范也提到了命名约定。
在第7.7章包的唯一名称中,我们看到包名由大写字母组成的例子(因此CamelCase表示法是可以的),他们建议用下划线替换连字符("mary-lou" -> "mary_lou"),并使用下划线作为java关键字的前缀("com.example. ")。Enum " -> "com.example._enum")
更多关于包名中大写字母的例子可以在6.8.1包名章中找到。
以下是官方命名规范文件规定的内容:
包 唯一包名的前缀总是用全小写的ASCII字母书写,并且应该是顶级域名之一,目前是com, edu, gov, mil, net, org,或者是ISO标准3166,1981中指定的标识国家的英文两字母代码之一。 包名称的后续组件根据组织自己的内部命名约定而变化。这样的约定可以指定某些目录名称组件为部门、部门、项目、机器或登录名。 例子 com.sun.eng com.apple.quicktime.v2 edu.cmu.cs.bovik.cheese
唯一包名的前缀总是用全小写的ASCII字母书写,并且应该是顶级域名之一,目前是com, edu, gov, mil, net, org,或者是ISO标准3166,1981中指定的标识国家的英文两字母代码之一。
edu
gov
mil
net
org
包名称的后续组件根据组织自己的内部命名约定而变化。这样的约定可以指定某些目录名称组件为部门、部门、项目、机器或登录名。
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.sun.sunsoft.DOE
gov.whitehouse.socks.mousefinder
com.JavaSoft.jag.Oak
org.npr.pledge.driver
uk.ac.city.rugby.game
以下节选也是相关的:
在某些情况下,internet域名可能不是有效的包名。以下是处理这些情况的一些建议约定: 如果域名包含一个连字符,或任何其他特殊字符不允许在标识符,将其转换为一个下划线。 如果任何结果包名称组件是关键字,则将下划线附加到它们。 如果任何结果包名称组件以数字开头,或任何其他不允许作为标识符的初始字符的字符,则在组件前加上下划线。
在某些情况下,internet域名可能不是有效的包名。以下是处理这些情况的一些建议约定:
任何人都可以使用下划线_(没关系)
任何人都不应该使用连字符-(这是坏习惯)
不应在包名中使用大写字母(不良做法)
注意:这里的“坏习惯”在技术上是指你可以使用它,但从传统上讲,写它是不礼貌的。
来源:命名包(docs.oracle)
小开 包名中的下划线看起来很难看。值得注意的是,对于由三个或三个以上单词组成的名称,我使用首字母缩写(例如:com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo),然后在package-info.java中记录包的用途。
包名中的下划线看起来很难看。值得注意的是,对于由三个或三个以上单词组成的名称,我使用首字母缩写(例如:com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo),然后在package-info.java中记录包的用途。
com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
package-info.java
在包名中串联单词是大多数开发人员不会做的事情。
你可以用。
参考JLS名称声明