Java 包名称中单词分隔符的约定是什么?

新手上路,请多包涵

包名中的单词应该如何分隔?以下哪项是正确的?

  1. com.stackoverflow.my_packageSnake Case 使用下划线)
  2. com.stackoverflow.my-packageKebab Case 使用连字符)
  3. com.stackoverflow.myPackageCamel Case
  4. com.stackoverflow.MyPackagePascal Case

一般标准是什么?

原文由 Jigar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 845
2 个回答

以下是官方命名约定文档的规定:

套餐

唯一包名称的前缀始终以全小写 ASCII 字母书写,并且应该是顶级域名之一,目前 com , edu , gov , mil , net , org , 或英文双字母代码之一,ISO 1916 中指定的标准标识国家/地区 3916。

包名称的后续组成部分根据组织自己的内部命名约定而有所不同。这样的约定可能指定某些目录名称组件是部门、部门、项目、机器或登录名。

例子

  • 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

以下摘录也是相关的:

在某些情况下,互联网域名可能不是有效的包名。以下是处理这些情况的一些建议约定:

  • 如果域名包含连字符或标识符中不允许的任何其他特殊字符,请将其转换为下划线。
  • 如果任何生成的包名称组件是关键字,则在它们后面附加下划线。
  • 如果任何生成的包名称组件以数字或任何其他不允许作为标识符初始字符的字符开头,则在组件前加上下划线前缀。

参考

原文由 polygenelubricants 发布,翻译遵循 CC BY-SA 4.0 许可协议

这三个都不是惯例。

使用 com.stackoverflow.mypackage

包名称不遵循驼峰式大小写、下划线或连字符 包命名约定

此外, Google Java Style Guide 指定了完全相同的(即 com.stackoverflow.mypackage )约定:

5.2.1 包名

包名全部小写,连续的单词简单地连接在一起(没有下划线)。例如, com.example.deepspace而不是 com.example.deepSpacecom.example.deep_space

Google Java 风格指南:5.2 按标识符类型划分的规则:5.2.1 包名称

原文由 bragboy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题