Ali-Check使用记录
2018-11-07 本文已影响77人
积木Blocks
记录Alibaba Java Coding Guidelines插件的使用
大体分为三大类
- Blocker(阻挡者)
危险程度最高,对于代码规范性,可读性,执行效率的建议 - Critical(批评的)
危险等级比较高,可能会导致程序的异常 - Major(专业的)
危险程度较低,主要是提高代码可读性
Blocker
在if/else/for/while/do语句中必须使用大括号,即使只有一行代码,避免使用下面的形式:if (condition) statements;
- 反例
很多时候为了看起来很高端或者减少行数,而省略括号。这样会大大降低可读性,一个if可能都还好,要是多个if/else,看起来就很头疼。
if(list == null) return;
- 正例
if(list == null) {
return;
}
所有的覆写方法,必须加@Override注解。
- 反例:getObject()与get0bject()的问题。一个是字母的O,一个是数字的0,加@Override可以准确判断是否覆盖成功。另外,如果在抽象类中对方法签名进行修改,其实现类会马上编译报错。
Critical
Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals
- 反例
if (str.equals("0.0")) {
...
}
- 正例
因为str值不确定,可能为null。这时候使用"0.0"这样确定有值的对象来调用equals会安全很多。
if ("0.0".equals(str)) {
...
}
在一个switch块内,每个case要么通过break/return等来终止,要么注释说明程序将继续执行到哪一个case为止;在一个switch块内,都必须包含一个default语句并且放在最后,即使它什么代码也没有。
Major
不允许任何魔法值(即未经定义的常量)直接出现在代码中。
- 反例
if ("0.0".equals(str)) {
...
}
- 正例
魔法值很影响代码可读性,过段时间,编写者本人可能都会忘记这个魔法值的含义。所以需要将魔法值转换成常量,并且加上注释。
/**
* double的值为0.0,保留一位小数
*/
private static final String DOUBLE_VALUE_ZERO_WITH_ONE_DECIMAL = "0.0";
if (DOUBLE_VALUE_ZERO_WITH_ONE_DECIMAL.equals(str)) {
...
}
及时清理不再使用的代码段或配置信息。
说明:对于垃圾代码或过时配置,坚决清理干净,避免程序过度臃肿,代码冗余。
- 虽然在代码混淆的时候,这些不会占用apk的体积。但是注释或者冗余的代码还是会辣眼睛,并且可能误导读者。如果非要加,需要写这段代码的说明注释
方法内部单行注释,在被注释语句上方另起一行,使用//注释。
方法内部多行注释使用/* */注释。注意与代码对齐。
- 反例
在方法外部的常量用单行注释
//double的值为0.0,保留一位小数
private static final String DOUBLE_VALUE_ZERO_WITH_ONE_DECIMAL = "0.0";
- 正例
/**
* double的值为0.0,保留一位小数
*/
private static final String DOUBLE_VALUE_ZERO_WITH_ONE_DECIMAL = "0.0";