代码优化---拒绝写死代码

博客探讨了如何优化Java代码,包括Controller层的返回值封装以减少硬编码,JSR303进行后端数据验证,以及全局异常处理来统一管理错误响应。此外,还介绍了通用的Key生成策略,以提高项目的可维护性。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值