# 代码格式

> 来源: Java开发手册（嵩山版）— 一(三) 代码格式

## 【强制】规则

### 1. 大括号规则

- 空大括号: 简洁写成 `{}`，中间无需换行和空格
- 非空代码块:
  1. 左大括号前不换行
  2. 左大括号后换行
  3. 右大括号前换行
  4. 右大括号后还有 else 等代码则不换行；终止的右大括号后必须换行

### 2. 小括号无多余空格

左小括号和右边相邻字符之间不出现空格；右小括号和左边相邻字符之间也不出现空格；左大括号前需要加空格。

> **反例**: `if ( a == b )`

### 3. 保留字与括号间加空格

`if/for/while/switch/do` 等保留字与括号之间都必须加空格。

### 4. 运算符左右加空格

任何二目、三目运算符的左右两边都需要加一个空格。包括 `=`、`&&`、`+-*/` 等。

### 5. 4 空格缩进，禁止 Tab

> **说明**: IDEA 勿勾选 Use tab character；Eclipse 勾选 insert spaces for tabs。

> **正例**:
> ```java
> public static void main(String[] args) {
>     String say = "hello";
>     if (flag == 0) {
>         System.out.println(say);
>     } else {
>         System.out.println("ok");
>     }
> }
> ```

### 6. 注释斜线后一空格

注释的双斜线与注释内容之间有且仅有一个空格。

> **正例**: `// 这是示例注释`

### 7. 强制转换无空格

类型强制转换时，右括号与强制转换值之间不需要任何空格。

> **正例**: `int second = (int)first + 2;`

### 8. 单行 ≤ 120 字符

单行字符数限制不超过 120 个，超出需要换行:

1. 第二行缩进 4 个空格，从第三行开始不再继续缩进
2. 运算符与下文一起换行
3. 方法调用的点符号与下文一起换行
4. 多个参数换行时在逗号后进行
5. 括号前不要换行

> **正例**:
> ```java
> sb.append("yang").append("hao")...
>         .append("chen")...
>         .append("chen");
> ```

### 9. 方法参数逗号后加空格

方法参数在定义和传入时，多个参数逗号后面必须加空格。

> **正例**: `method(args1, args2, args3);`

### 10. UTF-8 + Unix 换行

IDE 的 text file encoding 设置为 UTF-8；换行符使用 Unix 格式，不要使用 Windows 格式。

## 【推荐】规则

### 11. 单方法 ≤ 80 行

单个方法的总行数不超过 80 行（除注释之外的方法签名、左右大括号、方法内代码、空行等）。

### 12. 不对齐赋值等号

没有必要增加若干空格来使变量的赋值等号与上一行对应位置的等号对齐。

### 13. 不同逻辑间插空行

不同逻辑、不同语义、不同业务的代码之间插入一个空行分隔。任何情形，没有必要插入多个空行。
