首页 > 其他分享 >【重构的哲学】这个方法调用,我们怎么重构?AI不一定能告诉你!

【重构的哲学】这个方法调用,我们怎么重构?AI不一定能告诉你!

时间:2024-04-02 09:13:56浏览次数:26  
标签:重构 调用 get AI rechargeResultVO IPSFStatusEnum json RechargeResultVO

先上代码。

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) {
  // 如果充值成功将为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) {
  // 如果充值成功将为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) {
  // 如果充值成功将为1  撤销(充值失败)为9  充值中为0 switch (gameState){ case "1" : return IPSFStatusEnum.SUCCESS; case "9" : return IPSFStatusEnum.FAIL; default: return IPSFStatusEnum.PROCESSING; } }

 


关于这段代码,你觉得还有哪些地方需要重构的呢?欢迎交流。

标签:重构,调用,get,AI,rechargeResultVO,IPSFStatusEnum,json,RechargeResultVO
From: https://www.cnblogs.com/buguge/p/18109272

相关文章

  • 为 AI 而生的编程语言「GitHub 热点速览」
    Mojo是一种面向AI开发者的新型编程语言。它致力于将Python的简洁语法和C语言的高性能相结合,以填补研究和生产应用之间的差距。Mojo自去年5月发布后,终于又有动作了。最近,Mojo的标准库核心模块已在GitHub上开源,采用Apache2开源协议,开源后迅速受到广泛关注,登上了Gi......
  • ai绘画基础总结(一)安装设置
    comfyUI对有工作流经验的小伙伴来说比较友好。小白学习comfyUI门槛也不是很高。一、安装环境小白推荐直接整合包,b站有很多秋叶的,圣杯,还有疯狂AI启动器。纯小白推荐使用疯狂AI启动器(满血包)能解决很多依赖问题,自行安装依赖,很多都需要能上外网,所以推荐满血包。高手直接上官方就OK......
  • main方法
    packagezuo.da.na;publicclassDemo{publicvoidshow(){System.out.println("优秀程序设计员!");}//main方法,Java应用程序入口publicstaticvoidmain(String[]args){if(args.length<=0){//判断参数个数Sys......
  • 【THM】Active Reconnaissance(主动侦察)-初级渗透测试
    介绍在网络安全模块的第一个房间里,我们主要进行被动侦察。在第二个房间中,我们重点关注主动侦察以及与之相关的基本工具。我们学习使用网络浏览器来收集有关我们目标的更多信息。此外,我们讨论使用简单的工具(例如ping、traceroute、telnet和)nc来收集有关网络、系统和服务的信息......
  • Python:百度AI开放平台——OCR图像文字识别应用
    一、注册百度AI开放平台使用百度AI服务的步骤为:注册:注册成为百度AI开放平台开发者;创建AI应用:在百度API开放平台上创建相关类型的的AI应用,获得AppID、APIKey和SecretKey;调用API:调用相关类型的API,获得AI功能的结果,为开发者的应用服务。注册的操作步骤:登录百度AI开放平台,百......
  • Matlab|【核心复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略
    目录 主要内容     基本知识   1.问题引出2.可控负荷3.网络拓扑约束4.算法流程  结果一览   1.原文结果2.程序运行结果下载链接 主要内容   该模型复现文章《同时考虑考虑孤岛与重构的配电网故障恢复运行策略》,以IEEE33配电网为分析对象,通过......
  • 【Azure Function & Application Insights】调用Function上传和下载文件,有时候遇见大
    问题描述在FunctionApp中配置了无代码模式的ApplicationInsights,但有时候发现,超过1MB的文件上传/下载操作成功。但是在ApplicationInsights中,却没有发现请求日志?这是一种什么情况呢? 问题解答ApplicationInsights 是具有采样功能的,当传入执行的速率超过指定的阈值时,Appl......
  • 运维排查 | Systemd 之服务停止后状态为 failed
    哈喽大家好,我是咸鱼。我们知道CentOS7之后,Systemd代替了原来的SystemV来管理服务,相比SystemV,Systemd能够很好地解决各个服务间的依赖关系,还能让所有的服务同时启动,而不是串行启动。通常情况下,yum安装的软件会由系统的包管理器(如RPM)安装,并且会配置相应的systemd服务......
  • 笔记:海外独角兽《红杉美国:GenAI是一场10倍速的生产力革命》
    1960s后的历次技术变迁以及代表公司红杉美国合伙人David在去年发表了一篇AI's$200BillionQuestion的讨论。如果我们看目前投入到GPU上的投资,去年只是在Nvidia的芯片上就花了大概500亿美元,但目前可以确认的AI行业收入只有30亿美元。这些数据表明,AI产业目前还......
  • OpenAI革命性技术:短短15秒即可复刻任意声音|TodayAI
    随着技术的飞速发展,AI在克隆人类声音方面所需的时间已经大大缩短。从最初的数分钟到现在仅需几秒钟,OpenAI最近宣布其最新的声音克隆技术只需要15秒的音频样本即可精准复刻个人声音。OpenAI在其官方网站上发布了一个名为“VoiceEngine”的新模型的初步展示。该模型自2022年底......