(5/8)枚举的错误用法 之 方法体内部
2023-09-14 09:06:28 时间
▄︻┻┳═一Agenda:
▄︻┻┳═一(1/8)[代码整洁之道]你真的会用枚举吗?非也!
▄︻┻┳═一(2/8)枚举的错误用法 之 方法参数
▄︻┻┳═一(3/8)枚举的错误用法 之 方法参数(二)
▄︻┻┳═一(4/8)枚举的错误用法 之 方法返回值
▄︻┻┳═一(5/8)枚举的错误用法 之 方法体内部
▄︻┻┳═一(6/8)枚举的错误用法 之 分支判断
▄︻┻┳═一(7/8)借助枚举说一下数据类型定义规范
▄︻┻┳═一(8/8)RPC接口能用枚举就请考虑枚举
继续讲枚举的使用。前文阐释了方法请求参数、方法返回值、POJO属性定义成枚举类型的好处。本文讲在方法里使用枚举的妙处。
【先上代码】
private boolean riskCheck(RefundReqBO refundReq, RefundRspBO refundRsp, RpmOrdDO rpmOrd, RpmRtulDO rpmRtul, YGBizMessageContext ctx) throws YGException { Logger logger = YGLogger.getLogger(); ... ... String busTyp = RRCBusTypEnum.USER_CONSUME_REFUND_REFUND.getValue(); if(AcPayFlgEnum.NO_ACCOUNT_PAYMENT.getValue().equals(rpmOrd.getAcPayFlg())){ busTyp = RRCBusTypEnum.GWAY_CONSUME_REFUND.getValue(); } RealTimeRiskCheckReqBO riskReq = new RealTimeRiskCheckReqBO(); riskReq.setTxCd(refundReq.getGda().getTxCd()); ... ... /** 此处省略15行代码 **/ ... ... riskReq.setBusTyp(busTyp); ... ... }
本文要说的就是上面方法里busTyp变量的类型。
注意上面方法里省略的15行代码 ,正是这么多行逻辑代码的存在,当我们滚屏时,会给我们理解下文里出现的busTyp带来麻烦:busTyp具体指?又会有哪些值? 用我的14寸的笔记本电脑截屏如下,可以直观地看到,一屏显示不全这个变量的定义和使用。
【重构方式】
在上面的方法体里,把busTyp定义为了String,由于代码行多,在下文看到这个变量后,因为是字符串,所以难免不知道它是会存哪些值。这时呢,我们只好再翻上面的代码查看它的定义和赋了哪些值。
而如果把busTyp定义为RRCBusTypEnum,那么下文在用到的时候,就能直观的知道它的含义以及它的具体取值范围,从而提高了可读性。
BTW,不管存不存在那15行代码,把busTyp定义为RRCBusTypEnum,用的时候再取它对应的属性,这无疑是个好的编程习惯,因为代码整洁度高!
重构后的代码为:
private boolean riskCheck(RefundReqBO refundReq, RefundRspBO refundRsp, RpmOrdDO rpmOrd, RpmRtulDO rpmRtul, YGBizMessageContext ctx) throws YGException { Logger logger = YGLogger.getLogger(); ... ... RRCBusTypEnum busTyp = RRCBusTypEnum.USER_CONSUME_REFUND_REFUND; if(AcPayFlgEnum.NO_ACCOUNT_PAYMENT.getValue().equals(rpmOrd.getAcPayFlg())){ busTyp = RRCBusTypEnum.GWAY_CONSUME_REFUND; } RealTimeRiskCheckReqBO riskReq = new RealTimeRiskCheckReqBO(); riskReq.setTxCd(refundReq.getGda().getTxCd()); ... ... /** 此处省略15行代码 **/ ... ... riskReq.setBusTyp(busTyp.getValue()); ... ... }
相关文章
- oracle 19c ora-01017,Oracle 19c RMAN 连接PDB ORA-01017 错误解决方法
- 解决Navicat for MySQL 1045错误的三种方法
- 401错误的解决方法_网络连接错误401
- Microsoft VBScript 运行时错误 '800a0009' 下标越界: '[number: 1]'的解决方法
- 【错误记录】Melodyne 报错 ( 无法打开音频文件 )
- 【错误记录】IntelliJ IDEA 编译 Java 文件报错 ( 错误: 非法字符: ‘ufeff‘ )
- python-异常处理和错误调试-异步IO程序的调试方法(一)
- IIS7报500.23错误的原因分析及解决方法
- SQLServer 错误 故障 处理 修复 支持远程
- SQLServer 错误 12329 构造不支持使用代码页不是 1252 的排序规则的数据类型 char (n) 和 varchar (n) 。 故障 处理 修复 支持远程
- 关于org.mybatis.spring.MyBatisSystemException:Parameter ‘userId’ not found. 错误调试详解编程语言
- 错误解决SQL Server登录错误的方法(sqlserver登录)
- 解决Oracle错误01438(oracle01438)
- 解决MySQL 1064错误的方法(mysql的1064错误)
- 解决Oracle常见错误:指南及方法(oracle常见错误)
- 解析 Linux 中的段错误Note: As an AI language model I cannot guarantee the accuracy of technical information. Please consult with professional developers if you need further assistance.(段错误linux)
- 如何解决MySQL服务启动错误5?(mysql服务启动错误5)
- 解决Oracle视图错误的方法(oracle视图错误)
- MySQL查看错误日志:一步一步指南(mysql查看错误日志)
- Oracle安全00955错误解决方案(oracle-00955)
- CSV导入MySQL的错误处理方法(csv导入mysql错误)
- Mysql数据库中遇到1370错误,怎么解决(Mysql中1370报错)
- mysql中1093错误解决方法详解(mysql中1093)
- 1701错误MySQL遭遇失败(1701错误mysql)
- MySQL操作问题删除和查询出现错误(mysql不能删除并查询)
- Redis操作出现的错误处理方法(redis 错误)
- PHP计算代码执行耗时的代码修正网上普遍错误
- HTTP错误500.19解决方法(定义了重复的节点)
- mysql创建函数出现1418错误的解决办法
- Oracle数据库TNS常见错误的解决方法汇总
- MSSQL附加数据库拒绝访问提示5120错误的处理方法