5、在 ,:;及右括号( ))后 6、如果在一条语。Google出品的Java编码规范,强烈推荐,权威又科学( 三 )。" />

Google出品的Java编码规范,强烈推荐,权威又科学( 三 )


4、在任何二元或三元运算符的两侧 。 这也适用于以下“类运算符”符号:
类型界限中的 --tt-darkmode-color: #9B9B9B;">5、在 ,:;及右括号( ))后
6、如果在一条语句后做注释 , 则双斜杠(//)两边都要空格 。 这里可以允许多个空格 , 但没有必要 。
7、类型和变量之间:Listlist 。
8、数组初始化中 , 大括号内的空格是可选的 , 即 newint[]{5,6}和 newint[]{5,6}都是可以的 。
Note:这个规则并不要求或禁止一行的开关或结尾需要额外的空格 , 只对内部空格做要求 。
4.6.3 水平对齐:不做要求术语说明:水平对齐指的是通过增加可变数量的空格来使某一行的字符与上一行的相应字符对齐 。
这是允许的(而且在不少地方可以看到这样的代码) , 但Google编程风格对此不做要求 。 即使对于已经使用水平对齐的代码 , 我们也不需要去保持这种风格 。
以下示例先展示未对齐的代码 , 然后是对齐的代码:
private int x; // this is fineprivate Color color; // this tooprivate intx;// permitted, but future editsprivate Color color;// may leave it unalignedTip:对齐可增加代码可读性 , 但它为日后的维护带来问题 。 考虑未来某个时候 , 我们需要修改一堆对齐的代码中的一行 。 这可能导致原本很漂亮的对齐代码变得错位 。 很可能它会提示你调整周围代码的空白来使这一堆代码重新水平对齐(比如程序员想保持这种水平对齐的风格) ,这就会让你做许多的无用功 , 增加了reviewer的工作并且可能导致更多的合并冲突 。
4.7 用小括号来限定组:推荐除非作者和reviewer都认为去掉小括号也不会使代码被误解 , 或是去掉小括号能让代码更易于阅读 , 否则我们不应该去掉小括号 。 我们没有理由假设读者能记住整个Java运算符优先级表 。
4.8 具体结构4.8.1 枚举类枚举常量间用逗号隔开 , 换行可选 。
没有方法和文档的枚举类可写成数组初始化的格式:
private enum Suit { CLUBS, HEARTS, SPADES, DIAMONDS }由于枚举类也是一个类 , 因此所有适用于其它类的格式规则也适用于枚举类 。
4.8.2 变量声明4.8.2.1 每次只声明一个变量不要使用组合声明 , 比如 inta,b; 。
4.8.2.2 需要时才声明 , 并尽快进行初始化不要在一个代码块的开头把局部变量一次性都声明了(这是c语言的做法) , 而是在第一次需要使用它时才声明 。 局部变量在声明时最好就进行初始化 , 或者声明后尽快进行初始化 。
4.8.3 数组4.8.3.1 数组初始化:可写成块状结构数组初始化可以写成块状结构 , 比如 , 下面的写法都是OK的:
new int[] {0, 1, 2, 3 }new int[] {0,1,2,3}new int[] {0, 1,2, 3}new int[]{0, 1, 2, 3}4.8.3.2 非C风格的数组声明中括号是类型的一部分:String[]args ,而非 Stringargs[] 。
4.8.4 switch语句术语说明:switch块的大括号内是一个或多个语句组 。 每个语句组包含一个或多个switch标签( caseFOO:或 default:) , 后面跟着一条或多条语句 。 switch case 支持的 6 种数据类型 , 推荐大家看下 。
4.8.4.1 缩进与其它块状结构一致 , switch块中的内容缩进为2个空格 。
每个switch标签后新起一行 , 再缩进2个空格 , 写下一条或多条语句 。
4.8.4.2 Fall-through:注释在一个switch块内 , 每个语句组要么通过 break,continue,return或抛出异常来终止 , 要么通过一条注释来说明程序将继续执行到下一个语句组 ,任何能表达这个意思的注释都是OK的(典型的是用 // fall through) 。 这个特殊的注释并不需要在最后一个语句组(一般是 default)中出现 。 示例:
switch (input) {case 1:case 2:prepareOneOrTwo();// fall throughcase 3:handleOneTwoOrThree();break;default:handleLargeNumber(input);}4.8.4.3 default的情况要写出来每个switch语句都包含一个 default语句组 , 即使它什么代码也不包含 。
4.8.5 注解(Annotations)注解紧跟在文档块后面 , 应用于类、方法和构造函数 , 一个注解独占一行 。 这些换行不属于自动换行(第4.5节 , 自动换行) , 因此缩进级别不变 。 例如:
@Override@Nullablepublic String getNameIfPresent() { ... }例外:单个的注解可以和签名的第一行出现在同一行 。 例如:
@Override public int hashCode() { ... }应用于字段的注解紧随文档块出现 , 应用于字段的多个注解允许与字段出现在同一行 。 例如:
@Partial @Mock DataLoader loader;参数和局部变量注解没有特定规则 。
4.8.6 注释4.8.6.1 块注释风格块注释与其周围的代码在同一缩进级别 。 它们可以是 /* ... */风格 , 也可以是 // ...风格 。 对于多行的 /* ... */注释 , 后续行必须从 *开始 ,并且与前一行的 *对齐 。 以下示例注释都是OK的 。