命名约定

包名称

  • 软件包名称应全部为小写,不带下划线或其他特殊字符。
  • 包名称以开发者公司网址的反向权限部分开头。这部分可以遵循项目/程序结构相关的包子结构。
  • 不要使用复数形式。遵循标准 API 的惯例,例如 java.lang.annotation 而不是 java.lang.annotations
  • 示例: com.yourcompany.widget.buttoncom.yourcompany.core.api

类,接口和枚举名称

  • 类和枚举名称通常应该是名词。
  • 接口名称通常应该是以…才能结尾的名词或形容词。
  • 使用大写的每个单词中的第一个字母的混合大小写(即 CamelCase )。
  • 匹配正则表达式^[A-Z][a-zA-Z0-9]*$
  • 使用整个单词并避免使用缩写,除非缩写比长形式更广泛使用。
  • 如果缩写是较长类名的一部分,则将缩写格式化为单词。
  • 例如: ArrayListBigIntegerArrayIndexOutOfBoundsExceptionIterable

方法名称

方法名称通常应为动词或其他操作描述

  • 它们应该匹配正则表达式^[a-z][a-zA-Z0-9]*$
  • 使用小写的第一个字母的混合大小写。
  • 例子: toStringhashCode

变量

变量名称应为大小写混合,第一个字母为小写

  • 匹配正则表达式^[a-z][a-zA-Z0-9]*$
  • 进一步的建议: 变量
  • 示例: elementscurrentIndex

类型变量

对于涉及很少类型变量的简单情况,请使用单个大写字母。

  • 匹配正则表达式^[A-Z][0-9]?$
  • 如果一个字母比另一个字母更具描述性(例如 KV 用于映射中的键和值,或者 R 用于函数返回类型),请使用该字母,否则使用 T
  • 对于单字母类型变量变得混乱的复杂情况,请使用以全部大写字母书写的较长名称,并使用下划线(_)来分隔单词。
  • 示例: TVSRC_VERTEX

常量

常量(static final 字段,其内容是不可变的,按语言规则或按惯例)应使用全部大写字母和下划线(_)命名以分隔单词。

  • 匹配正则表达式^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$
  • 示例: BUFFER_SIZEMAX_LEVEL

关于命名的其他指南

  • 避免在外部作用域中隐藏/遮蔽方法,变量和类型变量。
  • 让名称的详细程度与范围的大小相关联。 (例如,对大型类的字段使用描述性名称,为本地短期变量使用简要名称。)
  • 在命名公共静态成员时,如果你认为标识符将被静态导入,请将该标识符设置为自描述。
  • 进一步阅读: 命名部分 (在官方 Java 风格指南中)

来源: Oracle 的 Java 风格指南