▄︻┻┳═一Agenda:
继续讲枚举的使用。前文说的是方法参数和pojo属性定义成枚举类型的好处。本文讲在方法里使用枚举的妙处。
【先上代码】
private boolean riskCheck(RefundReqBO refundReq, RefundRspBO refundRsp, RpmOrdDO rpmOrd, RpmRtulDO rpmRtul, YGBizMessageContext ctx) throwsYGException {
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= newRealTimeRiskCheckReqBO();
riskReq.setTxCd(refundReq.getGda().getTxCd());
... .../**此处省略15行代码 **/... ...
riskReq.setBusTyp(busTyp);
... ...
}
代码截图如下,我的14寸的笔记本电脑,一屏显示不全这个变量的定义和使用。
【重构方式】
在上面的方法体里,把busTyp定义为了String,由于代码行多,在下文看到这个变量后,因为是字符串,所以难免不知道它是会存哪些值。这时呢,我们只好再翻上面的代码查看它的定义和赋了哪些值。
而如果把busTyp定义为RRCBusTypEnum,那么下文在用到的时候,就能直观的知道它的取值范围,从而提高了可读性。
重构后的代码为:
private boolean riskCheck(RefundReqBO refundReq, RefundRspBO refundRsp, RpmOrdDO rpmOrd, RpmRtulDO rpmRtul, YGBizMessageContext ctx) throwsYGException {
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= newRealTimeRiskCheckReqBO();
riskReq.setTxCd(refundReq.getGda().getTxCd());
... .../**此处省略15行代码 **/... ...
riskReq.setBusTyp(busTyp.getValue());
... ...
}