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

2022-08-31 04:26:18

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

  1. com.stackoverflow.my_package (Snake Case使用下划线)
  2. com.stackoverflow.my-package (Kebab Case使用连字符)
  3. com.stackoverflow.myPackage (Camel Case)
  4. com.stackoverflow.MyPackage (Pascal Case)

一般标准是什么?


答案 1

这三者都不是惯例。

用。com.stackoverflow.mypackage

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

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

5.2.1 软件包名称

软件包名称都是小写的,连续的单词只是简单地连接在一起(没有下划线)。例如,,不是 或 。com.example.deepspacecom.example.deepSpacecom.example.deep_space

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


答案 2

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

唯一软件包名称的前缀始终以全小写 ASCII 字母书写,并且应为顶级域名之一,当前 、、或 ISO 标准 3166, 1981 中指定的标识国家/地区的英文双字母代码之一。comedugovmilnetorg

包名称的后续组件根据组织自己的内部命名约定而有所不同。此类约定可能指定某些目录名称组件为部门、部门、项目、计算机或登录名。

例子

  • 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

以下摘录也是相关的:

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

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

引用