优雅代码(1)

2018-10-17  本文已影响23人  御风_2fd9

异常

自定义异常,设定状态码和相应的异常信息,在关键代码处打日志,并且抛出异常信息。
什么是关键代码处,比如调用接口,调用数据库等。
操作示例:
if (updateResult == null) {
    log.error("【取消订单】更新失败, orderMaster={}", orderMaster);
    throw new SellException(ResultEnum.ORDER_UPDATE_FAIL);
}
注意,此处打日志,使用了占位符的方式,相较于字符串拼接,更加优雅。

注释

好的代码没有注释,但是目前还达不到那种境界,而且,大面积不注释影响他人阅读,随着时间推移,自己都可能忘记自己当初写该段代码的初衷。
在代码关键点处注明代码用意,在接口方法处注明方法用途,入参,出参的含义。

使用枚举对象

将常量、状态码封装到枚举对象中,并设置常量值和常量含义两个对象属性。
比如描述订单状态
@Getter
public enum OrderStatusEnum {
NEW(0, "新订单"),
FINISHED(1, "完结"),
CANCEL(2, "已取消"),
;

private Integer code;
private String message;
OrderStatusEnum(Integer code, String message) {
    this.code = code;
    this.message = message;
}

}

工具类

将功能性强或业务意义很弱的代码抽取成工具类,分离代码类的职责,让单个类不至于显得太臃肿,增强代码可读性。
比如,生成订单唯一主键
抽取成一个工具类
public class KeyUtil {

/**
 * 生成唯一的主键
 * 格式: 时间+6位随机数
 * 使用synchronized 保证线程安全
 * @return
 */
public static synchronized String genUniqueKey() {
    Random random = new Random();
    Integer number = random.nextInt(900000) + 100000;

    return System.currentTimeMillis() + String.valueOf(number);
}

}

单元测试

对每层对象的每个方法进行单元测试,确保代码质量。

上一篇 下一篇

猜你喜欢

热点阅读