Google 出品的 Java 编码规范,强烈推荐( 三 )


  1. 分隔任何保留字与紧随其后的左括号(%20(%20)(如if,forcatch等) 。
  2. 分隔任何保留字与其前面的右大括号(%20}%20)(如%20else,catch) 。
  3. 在任何左大括号前(%20{),两个例外:@SomeAnnotation({a,b})(不使用空格) 。String[][]x=foo;(大括号间没有空格,见下面的Note) 。
  4. 在任何二元或三元运算符的两侧 。这也适用于以下「类运算符」符号:类型界限中的&(<TextendsFoo&Bar>) 。catch块中的管道符号(%20catch(FooException|BarExceptione) 。foreach语句中的分号 。
  5. 在%20,:;及右括号(%20)%20)后 。
  6. 如果在一条语句后做注释,则双斜杠(//)两边都要空格 。这里可以允许多个空格,但没有必要 。
  7. 类型和变量之间:List<string>list 。</string>
  8. 数组初始化中,大括号内的空格是可选的,即%20newint[]{5,6}和%20newint[]{5,6}都是可以的 。
Note:这个规则并不要求或禁止一行的开关或结尾需要额外的空格,只对内部空格做要求 。
 
4.6.3%20水平对齐:不做要求
术语说明:水平对齐指的是通过增加可变数量的空格来使某一行的字符与上一行的相应字符对齐 。
这是允许的(而且在不少地方可以看到这样的代码),但Google编程风格对此不做要求 。即使对于已经使用水平对齐的代码,我们也不需要去保持这种风格 。
以下示例先展示未对齐的代码,然后是对齐的代码:
 
Google 出品的 Java 编码规范,强烈推荐

文章插图
 
 
 
Tip:对齐可增加代码可读性,但它为日后的维护带来问题 。考虑未来某个时候,我们需要修改一堆对齐的代码中的一行 。这可能导致原本很漂亮的对齐代码变得错位 。很可能它会提示你调整周围代码的空白来使这一堆代码重新水平对齐(比如程序员想保持这种水平对齐的风格), 这就会让你做许多的无用功,增加了reviewer的工作并且可能导致更多的合并冲突 。
4.7 用小括号来限定组:推荐
除非作者和reviewer都认为去掉小括号也不会使代码被误解,或是去掉小括号能让代码更易于阅读,否则我们不应该去掉小括号 。我们没有理由假设读者能记住整个Java运算符优先级表 。
4.8 具体结构
4.8.1 枚举类
枚举常量间用逗号隔开,换行可选 。
没有方法和文档的枚举类可写成数组初始化的格式:
 
Google 出品的 Java 编码规范,强烈推荐

文章插图
 
 
 
由于枚举类也是一个类,因此所有适用于其它类的格式规则也适用于枚举类 。
4.8.2 变量声明
4.8.2.1 每次只声明一个变量
不要使用组合声明,比如 inta,b; 。
4.8.2.2 需要时才声明,并尽快进行初始化
不要在一个代码块的开头把局部变量一次性都声明了(这是C语言的做法),而是在第一次需要使用它时才声明 。局部变量在声明时最好就进行初始化,或者声明后尽快进行初始化 。
4.8.3 数组
4.8.3.1 数组初始化:可写成块状结构
数组初始化可以写成块状结构,比如,下面的写法都是OK的:
 
Google 出品的 Java 编码规范,强烈推荐

文章插图
 
 
 
4.8.3.2 非C风格的数组声明
中括号是类型的一部分:String[]args, 而非 Stringargs[] 。
4.8.4 switch语句
术语说明:switch块的大括号内是一个或多个语句组 。每个语句组包含一个或多个switch标签( caseFOO:或 default:),后面跟着一条或多条语句 。
4.8.4.1 缩进
与其它块状结构一致,switch块中的内容缩进为2个空格 。
每个switch标签后新起一行,再缩进2个空格,写下一条或多条语句 。
4.8.4.2 Fall-through:注释
在一个switch块内,每个语句组要么通过 break,continue,return或抛出异常来终止,要么通过一条注释来说明程序将继续执行到下一个语句组, 任何能表达这个意思的注释都是OK的(典型的是用 // fall through) 。这个特殊的注释并不需要在最后一个语句组(一般是 default)中出现 。
示例:
 
Google 出品的 Java 编码规范,强烈推荐

文章插图
 
 
 
4.8.4.3 default的情况要写出来
每个switch语句都包含一个default语句组,即使它什么代码也不包含 。
4.8.5 注解(Annotations)
注解紧跟在文档块后面,应用于类、方法和构造函数,一个注解独占一行 。这些换行不属于自动换行(第4.5节,自动换行),因此缩进级别不变 。例如:


推荐阅读