文章插图
例外:单个的注解可以和签名的第一行出现在同一行 。例如:
文章插图
应用于字段的注解紧随文档块出现,应用于字段的多个注解允许与字段出现在同一行 。例如:
文章插图
参数和局部变量注解没有特定规则 。
4.8.6 注释
4.8.6.1 块注释风格
块注释与其周围的代码在同一缩进级别 。它们可以是 /* ... */风格,也可以是 // ...风格 。对于多行的 /* ... */注释,后续行必须从 *开始, 并且与前一行的 *对齐 。以下示例注释都是OK的 。
文章插图
注释不要封闭在由星号或其它字符绘制的框架里 。
Tip:在写多行注释时,如果你希望在必要时能重新换行(即注释像段落风格一样),那么使用 /* ... */ 。
4.8.7 Modifiers
类和成员的modifiers如果存在,则按Java语言规范中推荐的顺序出现 。
文章插图
命名约定
5.1 对所有标识符都通用的规则
标识符只能使用ASCII字母和数字,因此每个有效的标识符名称都能匹配正则表达式 w+ 。
在Google其它编程语言风格中使用的特殊前缀或后缀,如 name_, mName, s_name和 kName,在Java编程风格中都不再使用 。
5.2 标识符类型的规则
5.2.1 包名
包名全部小写,连续的单词只是简单地连接起来,不使用下划线 。
5.2.2 类名
类名都以 UpperCamelCase风格编写 。
类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语 。现在还没有特定的规则或行之有效的约定来命名注解类型 。
测试类的命名以它要测试的类的名称开始,以Test结束 。例如,HashTest或 HashIntegrationTest 。
5.2.3 方法名
方法名都以lowerCamelCase风格编写 。
方法名通常是动词或动词短语 。
下划线可能出现在JUnit测试方法名称中用以分隔名称的逻辑组件 。一个典型的模式是:test<MethodUnderTest>_<state>,例如 testPop_emptyStack 。并不存在唯一正确的方式来命名测试方法 。
5.2.4 常量名
常量名命名模式为 CONSTANT_CASE,全部字母大写,用下划线分隔单词 。
每个常量都是一个静态final字段,但不是所有静态final字段都是常量 。在决定一个字段是否是一个常量时, 考虑它是否真的感觉像是一个常量 。例如,如果任何一个该实例的观测状态是可变的,则它几乎肯定不会是一个常量 。只是永远不 打算改变对象一般是不够的,它要真的一直不变才能将它示为常量 。
文章插图
这些名字通常是名词或名词短语 。
5.2.5 非常量字段名
非常量字段名以 lowerCamelCase风格编写 。
这些名字通常是名词或名词短语 。
5.2.6 参数名
参数名以 lowerCamelCase风格编写 。参数应该避免用单个字符命名 。
5.2.7 局部变量名
局部变量名以 lowerCamelCase风格编写,比起其它类型的名称,局部变量名可以有更为宽松的缩写 。
虽然缩写更宽松,但还是要避免用单字符进行命名,除了临时变量和循环变量 。
即使局部变量是final和不可改变的,也不应该把它示为常量,自然也不能用常量的规则去命名它 。
5.2.8 类型变量名
类型变量可用以下两种风格之一进行命名:
- 单个的大写字母,后面可以跟一个数字(如:E, T, X, T2) 。
- 以类命名方式(5.2.2节),后面加个大写的T(如:RequestT, FooBarT) 。
5.3 驼峰式命名法(CamelCase)
驼峰式命名法分大驼峰式命名法( UpperCamelCase)和小驼峰式命名法( lowerCamelCase) 。有时,我们有不只一种合理的方式将一个英语词组转换成驼峰形式,如缩略语或不寻常的结构(例如”IPv6”或”IOS”) 。Google指定了以下的转换方案 。
名字从 散文形式(prose form)开始:
- 把短语转换为纯ASCII码,并且移除任何单引号 。例如:「Müller’s algorithm」将变成「Muellers algorithm」 。
推荐阅读