异常
自定义异常,设定状态码和相应的异常信息,在关键代码处打日志,并且抛出异常信息。
什么是关键代码处,比如调用接口,调用数据库等。
操作示例:
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);
}
}
单元测试
对每层对象的每个方法进行单元测试,确保代码质量。
网友评论