好的代码格式犹如一篇优美的文章,阅读时令人心旷神怡。
// put elephant into fridge
put(elephant, fridge);
方法名 put,加上两个有意义的变量名 elephant 和 fridge,已经说明了这是在干什么,语义清晰的代码不需要额外的注释。
1、大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:
2、 左、右小括号和字符之间不出现空格。详见 第 5 条下方正例提示。
反例 : if (空格 a == b 空格)
正例:if(a == b)
3、 if/for/while/switch/do 等保留字与括号之间都必须加空格。
4、缩进采用 4 个空格,禁止使用 tab 字符。
说明 : 如果使用 tab 缩进,必须设置 1 个 tab 为 4 个空格。IDEA 设置 tab 为 4 个空格时,请勿勾选 Use tab character;而在 eclipse 中,必须勾选 insert spaces for tabs。
正例 : (涉及 1-4 点)
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");
// 在右大括号后直接结束,则必须换行
}
}
5、单行字符数限制不超过 120 个,超出需要换行,换行时遵循如下原则:
StringBuffer sb = new StringBuffer();
//超过 120 个字符的情况下,换行缩进 4 个空格,并且方法前的点符号一起换行
sb.append("zi").append("xin")...
.append("huang")...
.append("huang")...
.append("huang");
反例 :
StringBuffer sb = new StringBuffer();
//超过 120 个字符的情况下,不要在括号前换行
sb.append("zi").append("xin")...append
("huang");
//参数很多的方法调用可能超过 120 个字符,不要在逗号前换行
method(args1, args2, args3, ...
, argsX);
int a = 3;
long b = 4L;
float c = 5F;
StringBuffer sb = new StringBuffer();
说明 : 增加 sb 这个变量,如果需要对齐,则给 a、b、c 都要增加几个空格,在变量比较多的情况下,是一种累赘的事情。
if (condition) {
...
return obj;
}
// 接着写 else 的业务逻辑代码;
说明 : 如果非得使用 if()...else if()...else...方式表达逻辑,避免后续代码维护困难,请勿超过 3 层。
正例 : 逻辑上超过 3 层的 if-else 代码可以使用卫语句,或者状态模式来实现。卫语句示例如下:
public void today() {
if (isBusy()) {
System.out.println(“change time.”);
return;
}
if (isFree()) {
System.out.println(“go to travel.”);
return;
}
System.out.println(“stay at home to learn Alibaba Java Coding Guideline.”);
return;
}
//伪代码如下
final boolean existed = (file.open(fileName, "w") != null) && (...) || (...);
if (existed) {
...
}
反例 :
if ((file.open(fileName, "w") != null) && (...) || (...)) {
...
}
《代码大全2》第14章 组织直线型代码_代码应该自上而下阅读_@来杯咖啡的博客-CSDN博客
《代码大全2》第15章 使用条件语句_@来杯咖啡的博客-CSDN博客
《代码大全2》第16章 控制循环_@来杯咖啡的博客-CSDN博客
《代码大全2》第17章 不常见的控制结构_@来杯咖啡的博客-CSDN博客
《代码大全2》第18章 表驱动法_阶梯访问表_@来杯咖啡的博客-CSDN博客
《阿里巴巴开发规范》
《代码大全2》