代码优化小技巧-使用enum统一返回code码
前言
在开发过程中,经常会有需要填写返回码来作为返回值的情况,最经典的场景便是请求接口的返回码,例如返回Result:
public class MyResult extends Result {private Object data;public Result(ResponseCode responseCode, Object data) {super(responseCode.getCode());this.data = data;setTimestamp(System.currentTimeMillis());}
}
如果我们要根据不同的处理结果,返回不同的code码以及data,例如:
成功:
return new MyResult(1, "返回成功");
失败:
return new MyResult(-1, "返回失败");
在这种情况下,使用数字1,-1这种形式存在一个问题,若后续需要将成功码返回改成2,便需要把所有的返回成功的场景改为2,明显是可扩展性很差的代码,因此很多处理方式就是将返回码抽成常量,例如:
private static final CODE_SUCCESS = 1;
private static final CODE_FAILURE = -1;
这时候就可以这样子进行使用:
成功:
return new MyResult(CODE_SUCCESS , "返回成功");
失败:
return new MyResult(CODE_FAILURE , "返回失败");
若有多个场景下,便可以使用相同的常量来进行返回,同时还可以很方便的进行修改返回码的值。
这种方法看起来已经很合适了,但是存在一个问题:
在后期随着返回码的场景增加、返回码的数量增加,很容易出现在使用过程中要从多个码中来获取某个码,出现获取错误的情况,例如,有以下Code:
private static final CODE_SUCCESS_UPGRADE = 1;
private static final CODE_SUCCESS_UPDATE = 2;
private static final CODE_SUCCESS_DOWNLOAD = 3;
private static final CODE_SUCCESS = 1;
.......
在使用的过程中就容易出现错误。
那么有没有方法可以更加优雅的实现返回code的统一呢?
这时候就可以通过在类中使用Enum来做常量的保存来进行优化了。
步骤
1、在类中创建内enum
public class Result {// 添加enumpublic enum ResponseCode {}private int code;private long timestamp;public Result() {}public Result(int code) {System.out.println("code : " + code);this.code = code;}public long getTimestamp() {return timestamp;}public void setTimestamp(long timestamp) {this.timestamp = timestamp;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}}
2、给enum设置定义好的值
public enum ResponseCode {Success(0),Failure(-1),AuthenticationFailed(401),TokenFailed(404);private int code;public int getCode() {return code;}ResponseCode(int code) {this.code = code;}}
给每个值设置好良好的变量名,并且给定code,用该code来进行返回。
3、构造函数中修改为传入enum值,替换返回码,将其他构造函数设置为private
public class Result {public enum ResponseCode {Success(0),Failure(-1),AuthenticationFailed(401),TokenFailed(404);private int code;public int getCode() {return code;}ResponseCode(int code) {this.code = code;}}private int code;private long timestamp;public Result() {}public Result(ResponseCode responseCode) {this.code = responseCode.getCode();}}
在使用的时候就可以使用内部定义的code来进行传入。
这样子做有几个好处:
- 在类内部定义好传入规范,避免引用外部常量或者变量时因为外部修改导致错误发生,降低与外界耦合性,增加内聚性。
- 调用时规范用户返回码,避免用户传入异常的码,用户只能够传入内部enum所定义好的code,规范用户传入形式,增加代码稳健性。
- 保证编译时的类型安全,不会因为用户传入非法的类型而导致运行时错误。
代码优化小技巧-使用enum统一返回code码相关推荐
- 提高效率的Java代码优化小技巧
可以提高效率的Java代码优化小技巧 前言 代码优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面 ...
- php源码编程,10个小技巧让你做好php源码编程
PHP是目前使用最广泛的网站编程语言,也是今后发展的一大趋势.有很多站长或多或少掌握一些php编程方法,下面小编就介绍十点实用的php编码技巧. 1.cho比print 快,并且使用echo的多重参数 ...
- [小技巧]移除C/C++源码中无关的#ifdef
我们在阅读C/C++的开源代码时,常常会遇到这样的烦恼.很多开源项目是跨平台的,代码中使用了大量条件编译,充斥着各种#ifdef(#ifudef)等等.这些代码段对于源码阅读者来说,通常是一种干扰(源 ...
- Python自动化小技巧06——任意图片做出二维码
Python做二维码是很有趣的小项目.这段代码很简单,新手也能很快学会. 而且很实用,组建活动,送礼物,表白啥都能用的上. 主要依靠MyQR这个库来实现,先来看看效果: 我们将下面这个表情包,变为一个 ...
- 一些小技巧,想起来了就码上!
printf.scanf的输入.输出效率要比cout.cin高很多 数组的长度可以使用sizeof函数求得 sizeof(array)/sizeof(array[0]);
- Restful Api 写法——统一返回值
记录Restful Api 自定义统一返回值方式! 以下为示例代码: Code码Java类 package *.*.*;import java.util.ArrayList; import java. ...
- 使用ResponseEntity统一返回数据
使用ResponseEntity统一返回状态码和数据 它是Spring提供的一个类,它内部封装了状态码,请求头,请求体等信息,可以根据自己的需要去设置状态码.请求体的信息.ResponseEntity ...
- 苹果手机把游戏藏在计算机,七个一定要知道的Iphone隐藏小技巧,很实用,我知道的太晚了...
原标题:七个一定要知道的Iphone隐藏小技巧,很实用,我知道的太晚了 关于Iphone手机的小技巧大家都知道多少个呢?如果你用了苹果很多年的话,那你肯定知道很多小技巧吧?今天和分享些我个人知道的一些 ...
- python将数据导出到excel_使用python将大量数据导出到Excel中的小技巧分享
使用python将大量数据导出到Excel中的小技巧分享 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: 使用python将大量数据导出到Excel中的小技巧分享. ...
最新文章
- python语言程序设计基础网课-宜昌2020年_高校邦_Python程序设计基础【实境编程】...
- 编写自己的Javascript库-1
- Elastic Stack简介
- 使用bootstrap-table插件
- LeetCode 662. 二叉树最大宽度(递归)
- php操作MySQL数据库的方法和解析
- 通用时区:你应该知道的数据库时区知识
- 分布式监控系统开发【day38】:报警阈值程序逻辑解析(三)
- 独家发布全能在线语言翻译工具QTranslate v6.8.0 汉化中文版
- OpenSSL密码库算法笔记——第2.4章 三种模运算的比较
- MINIUI grid学习笔记
- 算法偏见是什么_处理人工智能的偏见如何使算法公平公正
- 电影——《小萝莉的猴神大叔》
- 深入理解java虚拟机(五)GC垃圾回收-经典垃圾收集器
- spring常见漏洞总结
- 电视剧 | 黑镜S5E1 生死搏击
- 攻击CSK靶机环境并学习linux渗透思路
- 小天软件园程序源码 一款纯发布软件程序
- 【IPFS直播】 利用ipfs协议传输进行直播
- Trimmomatic