代码格式
如果是大括号内为空,则简洁地写成{}即可,大括号中间无需换行和空格;如果是非空代码块:
1) 左大括号前不换行。
2) 左大括号后换行。
3) 右大括号前换行。
4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格
if/for/while/switch/do 等保留字与括号之间都必须加空格。
任何二目、三目运算符的左右两边都需要加一个空格
采用 4 个空格缩进,禁止使用 tab 字符
reason: 国标是4个空格,一个tab字符不一定是四个空格,若使用tab,必须对编译器设置:
idea设置方式:todo:
code:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20public class FormatClass {
public static void main(String[] args) {
// 缩进 4 个空格
String say = "hello";
// 运算符的左右必须有一个空格
int flag = 0;
// 关键词 if 与括号之间必须有一个空格,括号内的 f 与左括号,0 与右括号不需要空格
if (flag == 0) {
System.out.println(say);
// 左大括号前加空格且不换行;左大括号后换行
if (flag == 1) {
System.out.println("world");
// 右大括号前换行,右大括号后有 else,不用换行
} else {
System.out.println("ok");
// 在右大括号后直接结束,则必须换行
}
}
}
}注释的双斜线与注释内容之间有且仅有一个空格
在进行类型强制转换时,右括号与强制转换值之间不需要任何空格隔开
正例:
long first = 1000000000000L;
int second = (int)first + 2;单行字符数限制不超过 120 个,超出需要换行
1)第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进。
2)运算符与下文一起换行。
3)方法调用的点符号与下文一起换行。
4)方法调用中的多个参数需要换行时,在逗号后进行。
5)在括号前不要换行
code:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// 正例
StringBuilder sb = new StringBuilder();
// 超过 120 个字符的情况下,换行缩进 4 个空格,点号和方法名称一起换行
sb.append("Jack").append("Ma")...
.append("alibaba")...
.append("alibaba")...
.append("alibaba");
// 反例
StringBuilder sb = new StringBuilder();
// 超过 120 个字符的情况下,不要在括号前换行
sb.append("Jack").append("Ma")...append
("alibaba");
// 参数很多的方法调用可能超过 120 个字符,不要在逗号前换行
method(args1, args2, args3, ...
, argsX);方法参数在定义和传入时,多个参数逗号后边必须加空格
正例:method(args1, args2, args3)IDE 的 text file encoding 设置为 UTF-8; IDE 中文件的换行符使用 Unix 格式,不要使用 Windows 格式。
reason: 很多windows格式会有问题,比如记事本开头添加0xefbbbf(十六进制)的字符,会导致文本问题
配置方式:todo:单个方法的总行数不超过 80 行(除注释之外的方法签名、左右大括号、方法内代码、空行、回车及任何不可见字符的总行数不超过
80行, 建议把独立的逻辑抽取出来形成单独的方法,清晰明了)没有必要增加若干空格来使变量的赋值等号与上一行对应位置的等号对齐。
reason: 并不好看;变量比较多的情况下会非常麻烦;
正例:1
2
3
4int one = 1;
long two = 2L;
float three = 3F;
StringBuilder sb = new StringBuilder();不同逻辑、不同语义、不同业务的代码之间插入一个(仅仅一行就够了)空行分隔开来以提升可读性。