命名约定
包名称
- 软件包名称应全部为小写,不带下划线或其他特殊字符。
- 包名称以开发者公司网址的反向权限部分开头。这部分可以遵循项目/程序结构相关的包子结构。
- 不要使用复数形式。遵循标准 API 的惯例,例如
java.lang.annotation
而不是java.lang.annotations
。 - 示例:
com.yourcompany.widget.button
,com.yourcompany.core.api
类,接口和枚举名称
- 类和枚举名称通常应该是名词。
- 接口名称通常应该是以…才能结尾的名词或形容词。
- 使用大写的每个单词中的第一个字母的混合大小写(即 CamelCase )。
- 匹配正则表达式
^[A-Z][a-zA-Z0-9]*$
。 - 使用整个单词并避免使用缩写,除非缩写比长形式更广泛使用。
- 如果缩写是较长类名的一部分,则将缩写格式化为单词。
- 例如:
ArrayList
,BigInteger
,ArrayIndexOutOfBoundsException
,Iterable
。
方法名称
方法名称通常应为动词或其他操作描述
- 它们应该匹配正则表达式
^[a-z][a-zA-Z0-9]*$
。 - 使用小写的第一个字母的混合大小写。
- 例子:
toString
,hashCode
变量
变量名称应为大小写混合,第一个字母为小写
- 匹配正则表达式
^[a-z][a-zA-Z0-9]*$
- 进一步的建议: 变量
- 示例:
elements
,currentIndex
类型变量
对于涉及很少类型变量的简单情况,请使用单个大写字母。
- 匹配正则表达式
^[A-Z][0-9]?$
- 如果一个字母比另一个字母更具描述性(例如
K
和V
用于映射中的键和值,或者R
用于函数返回类型),请使用该字母,否则使用T
。 - 对于单字母类型变量变得混乱的复杂情况,请使用以全部大写字母书写的较长名称,并使用下划线(
_
)来分隔单词。 - 示例:
T
,V
,SRC_VERTEX
常量
常量(static final
字段,其内容是不可变的,按语言规则或按惯例)应使用全部大写字母和下划线(_
)命名以分隔单词。
- 匹配正则表达式
^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$
- 示例:
BUFFER_SIZE
,MAX_LEVEL
关于命名的其他指南
- 避免在外部作用域中隐藏/遮蔽方法,变量和类型变量。
- 让名称的详细程度与范围的大小相关联。 (例如,对大型类的字段使用描述性名称,为本地短期变量使用简要名称。)
- 在命名公共静态成员时,如果你认为标识符将被静态导入,请将该标识符设置为自描述。
- 进一步阅读: 命名部分 (在官方 Java 风格指南中)
来源: Oracle 的 Java 风格指南