先上代码。- public Result<RechargeResultVO> queryOrder(String orderNo) {
- JSONObject json = ... // 查询外部通道
- RechargeResultVO rechargeResultVO = new RechargeResultVO();
- rechargeResultVO.setOrderNo(json.get("sporder_id"));
- rechargeResultVO.setChannelOrderNo(json.get("orderid"));
- rechargeResultVO = checkResult(json, rechargeResultVO);
- return Result.success(rechargeResultVO);
- }
- public RechargeResultVO checkResult(JSONObject json, RechargeResultVO rechargeResultVO) {<br> // 如果充值成功将为1 撤销(充值失败)为9 充值中为0
- switch (json.get("game_state")){
- case "1" :
- rechargeResultVO.setOrderStatus(IPSFStatusEnum.SUCCESS);
- break;
- case "9" :
- rechargeResultVO.setOrderStatus(IPSFStatusEnum.FAIL);
- break;
- default:
- rechargeResultVO.setOrderStatus(IPSFStatusEnum.PROCESSING);
- break;
- }
- return rechargeResultVO;
- }
复制代码
这段代码的逻辑并不复杂,理解起来也不难。不过,这内里确实存在着一些值得重构的事项。
重构项1:
checkResult 的第2个参数 rechargeResultVO 是引用范例。
重构项2:
从 checkResult 的方法实现来看,它的职责是 根据 game_state 的差异情况,来给 rechargeResultVO 的 orederStatus 赋值。因此,可以重定名为 convertStatus,以更正确地反映其功能。
重构项3:
关于 checkResult 的第1个参数, 联合方法实现可以看出来, 并不需要传一个json对象, 而是 gameState 变量 就充足了。
经过以上3项分析,重构后的代码如下。- public Result<RechargeResultVO> queryOrder(String orderNo) {
- JSONObject json = ... // 查询外部通道
- RechargeResultVO rechargeResultVO = new RechargeResultVO();
- rechargeResultVO.setOrderNo(json.get("sporder_id"));
- rechargeResultVO.setChannelOrderNo(json.get("orderid"));
- convertStatus(json.get("game_state"), rechargeResultVO);
- return Result.success(rechargeResultVO);
- }
- public void convertStatus(String gameState, RechargeResultVO rechargeResultVO) {<br> // 如果充值成功将为1 撤销(充值失败)为9 充值中为0
- switch (gameState){
- case "1" :
- rechargeResultVO.setOrderStatus(IPSFStatusEnum.SUCCESS);
- break;
- case "9" :
- rechargeResultVO.setOrderStatus(IPSFStatusEnum.FAIL);
- break;
- default:
- rechargeResultVO.setOrderStatus(IPSFStatusEnum.PROCESSING);
- break;
- }
- }
复制代码
关于这段代码,你以为还有哪些地方需要重构的呢?欢迎交流。
是的。上面代码还可以提出重构建议:convertStatus 可以不需要 第2个参数。 而是 直接返回 转换后的状态值。另外,convertStatus 可以是 static。这时,重构后的代码如下。是不是更棒了呢!- public Result<RechargeResultVO> queryOrder(String orderNo) {
- JSONObject json = ... // 查询外部通道
- RechargeResultVO rechargeResultVO = new RechargeResultVO();
- rechargeResultVO.setOrderNo(json.get("sporder_id"));
- rechargeResultVO.setChannelOrderNo(json.get("orderid"));
- rechargeResultVO.setOrderStatus(convertStatus(json.get("game_state")));
- return Result.success(rechargeResultVO);
- }
- public static IPSFStatusEnum convertStatus(String gameState) {<br> // 如果充值成功将为1 撤销(充值失败)为9 充值中为0
- switch (gameState){
- case "1" :
- return IPSFStatusEnum.SUCCESS;
- case "9" :
- return IPSFStatusEnum.FAIL;
- default:
- return IPSFStatusEnum.PROCESSING;
- }
- }
复制代码
关于这段代码,你以为还有哪些地方需要重构的呢?欢迎交流。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |