格式规约
(二) 格式规约
Rule 1. 【强制】使用项目组统一的代码格式模板,基于IDE自动的格式化
1)IDE的默认代码格式模板,能简化绝大部分关于格式规范(如空格,括号)的描述。
2)统一的模板,并在接手旧项目先进行一次全面格式化,可以避免, 不同开发者之间,因为格式不统一产生代码合并冲突,或者代码变更日志中因为格式不同引起的变更,掩盖了真正的逻辑变更。
3)设定项目组统一的行宽,建议120。
4)设定项目组统一的缩进方式(Tab或二空格,四空格均可),基于IDE自动转换。
VIP代码格式化模板
Rule 2. 【强制】IDE的text file encoding设置为UTF-8; IDE中文件的换行符使用Unix格式,不要使用Windows格式
Rule 3. 【推荐】 用小括号来限定运算优先级
我们没有理由假设读者能记住整个Java运算符优先级表。除非作者和Reviewer都认为去掉小括号也不会使代码被误解,甚至更易于阅读。
if ((a == b) && (c == d))
Sonar-1068:Limited dependence should be placed on operator precedence rules in expressions,我们修改了三目运算符 foo!=null?foo:"" 不需要加括号。
Rule 4. 【推荐】类内方法定义的顺序,不要“总是在类的最后添加新方法”
一个类就是一篇文章,想象一个阅读者的存在,合理安排方法的布局。
1)顺序依次是:构造函数 > (公有方法>保护方法>私有方法) > getter/setter方法。
如果公有方法可以分成几组,私有方法也紧跟公有方法的分组。
2)当一个类有多个构造方法,或者多个同名的重载方法,这些方法应该放置在一起。其中参数较多的方法在后面。
public Foo(int a) {...}
public Foo(int a, String b) {...}
public void foo(int a) {...}
public void foo(int a, String b) {...}
3)作为调用者的方法,尽量放在被调用的方法前面。
public void foo() {
bar();
}
public void bar() {...}
Rule 5. 【推荐】通过空行进行逻辑分段
一段代码也是一段文章,需要合理的分段而不是一口气读到尾。
不同组的变量之间,不同业务逻辑的代码行之间,插入一个空行,起逻辑分段的作用。
而联系紧密的变量之间、语句之间,则尽量不要插入空行。
int width;
int height;
String name;
Rule 6.【推荐】避免IDE格式化
对于一些特殊场景(如使用大量的字符串拼接成一段文字,或者想把大量的枚举值排成一列),为了避免IDE自动格式化,土办法是把注释符号//加在每一行的末尾,但这有视觉的干扰,可以使用@formatter:off和@formatter:on来包装这段代码,让IDE跳过它。
// @formatter:off
...
// @formatter:on