[英]What is the convention for word separator in Java package names?
包名中的一个单词应该如何分隔? 以下哪些是正确的?
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
。
包名称不遵循驼峰式大小写或下划线或连字符包命名约定。
此外, Google Java Style Guide指定了完全相同的(即com.stackoverflow.mypackage
)约定:
5.2.1 包名
包名都是小写的,连续的单词简单地连接在一起(没有下划线)。 例如,
com.example.deepspace
,而不是com.example.deepSpace
或com.example.deep_space
。— Google Java Style Guide: 5.2 Rules by identifier type: 5.2.1 Package names 。
以下是官方命名约定文档的规定:
套餐
唯一包名的前缀总是用全小写的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
以下摘录也是相关的:
在某些情况下,互联网域名可能不是有效的包名称。 以下是处理这些情况的一些建议约定:
- 如果域名包含连字符或标识符中不允许的任何其他特殊字符,请将其转换为下划线。
- 如果任何结果包名称组件是关键字,则在其后添加下划线。
- 如果任何结果包名称组件以数字或任何其他不允许作为标识符首字符的字符开头,请在组件前加上下划线。
任何人都可以使用下划线_ (没关系)
没有人应该使用连字符- (这是不好的做法)
没有人应该在包名中使用大写字母(不好的做法)
注意:这里“不良做法”的意思是从技术上讲,您可以使用它,但通常不以良好的方式编写。
来源: 命名包(docs.oracle)
官方命名约定并没有那么严格,除了前缀(在您的示例中为com
)之外,它们甚至没有“禁止”驼峰命名法。
但我个人会避免使用大写字母
和连字符
,甚至是数字。 我也会像 Bragboy 建议的那样选择com.stackoverflow.mypackage
。
(连字符“-”在包名中不合法)
编辑
有趣 - 语言规范也有关于命名约定的内容。
在第 7.7 章唯一包名称中,我们看到包名称由大写字母组成的示例(因此 CamelCase 表示法可以),他们建议用下划线(“mary-lou”->“mary_lou”)和前缀 java 替换连字符带下划线的关键字(“com.example.enum”->“com.example._enum”)
更多关于包名中大写字母的例子可以在第6.8.1章包名中找到。
包名中的下划线看起来很难看。 对于什么是值得的,如果名称由三个或更多单词组成,我使用首字母(例如: com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
)然后记录包package-info.java
目的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.