代码优化---拒绝写死代码
Controller 层返回值封装
对返回结果封装能够有效的减少硬编码。提升开发效率,方便维护。以前如果我们不对返回结构进行封装就是直接 return 一个状态码啥的。实在不雅观
Result
这是对返回结果封装的一个类
package com.cpc.miaosha_02.result;
/**
* 这是类是对返回结果进行处理的类主要的目的是同样返回的结果
* @param <T>
*/
public class Result<T> {
//状态码
private int code;
//说明
private String msg;
//实际数据
private T data;
/**
* 成功时候的调用
* */
public static <T> Result<T> success(T data){
return new Result<T>(data);
}
/**
* 失败时候的调用
* */
public static <T> Result<T> error(CodeMsg codeMsg){
return new Result<T>(codeMsg);
}
private Result(T data) {
this.data = data;
}
private Result(int code, String msg) {
this.code = code;
this.msg = msg;
}
private Result(CodeMsg codeMsg) {
if(codeMsg != null) {
this.code = codeMsg.getCode();
this.msg = codeMsg.getMsg();
}
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
CodeMsg
这是对系统常量进行封装,做到统一管理。防止个人硬编码直接返回对应状态码,重构火葬场呀。这样做好维护,好管理。
package com.cpc.miaosha_02.result;
import com.alibaba.fastjson.JSON;
/**
* 对应返回转态做统一管理,以利于后期维护
*/
public class CodeMsg {
private int code;
private String msg;
//通用的错误码
public static CodeMsg SUCCESS = new CodeMsg(0, "success");
public static CodeMsg SERVER_ERROR = new CodeMsg(500100, "服务端异常");
public static CodeMsg BIND_ERROR = new CodeMsg(500101, "参数校验异常:%s");
//登录模块 5002XX
public static CodeMsg SESSION_ERROR = new CodeMsg(500210, "Session不存在或者已经失效");
public static CodeMsg PASSWORD_EMPTY = new CodeMsg(500211, "登录密码不能为空");
public static CodeMsg MOBILE_EMPTY = new CodeMsg(500212, "手机号不能为空");
public static CodeMsg MOBILE_ERROR = new CodeMsg(500213, "手机号格式错误");
public static CodeMsg MOBILE_NOT_EXIST = new CodeMsg(500214, "手机号不存在");
public static CodeMsg PASSWORD_ERROR = new CodeMsg(500215, "密码错误");
//商品模块 5003XX
//订单模块 5004XX
public static CodeMsg ORDER_NOT_EXIST = new CodeMsg(500400, "订单不存在");
//秒杀模块 5005XX
public static CodeMsg MIAO_SHA_OVER = new CodeMsg(500500, "商品已经秒杀完毕");
public static CodeMsg REPEATE_MIAOSHA = new CodeMsg(500501, "不能重复秒杀");
//将构造方法私有化,防止硬编码
private CodeMsg( ) {
}
private CodeMsg( int code,String msg ) {
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
/**
* 对msg中的占位符做处理
* @param args
* @return
*/
public CodeMsg fillArgs(Object... args) {
int code = this.code;
String message = String.format(this.msg, args);
return new CodeMsg(code, message);
}
/**
* 使用例子
* @param args
*/
public static void main(String[] args) {
Result result = Result.error(CodeMsg.SESSION_ERROR);
System.out.println(JSON.toJSONString(result));
}
@Override
public String toString() {
return "CodeMsg [code=" + code + ", msg=" + msg + "]";
}
}
简单的使用一下我们封装好的类:
成功结果集我们可以这样返回
/**
* 示例:使用封装好的代码来返回结果
* @return
*/
@RequestMapping