首页 > 其他分享 >通过一个简单的案例,来谈谈代码的重构

通过一个简单的案例,来谈谈代码的重构

时间:2024-07-12 11:32:25浏览次数:15  
标签:重构 ... pay payOrder 案例 谈谈 func orderNo order

上伪代码:

func a(){
    ...
    order = ***;
    payOrder = new v1{orderNo=order.orderNo, amt=order.amt, remark='结算资金下发'}; //通过order得到v1;
    pay(payOrder)    ;
    ...
}

func b(){
    ...
    order = ***;
    payOrder = new v1{orderNo=order.orderNo, amt=order.amt, remark='结算资金下发'}; //通过order得到v1;
    pay(payOrder)    ;
    ...
}

func pay(payOrder){
    ...
}

 

有同学一眼就看出了问题——重复代码。这同学给的重构方案如下。

func a(){
    ...
    order = ***;
    foo(order);
    ...
}

func b(){
    ...
    order = ***;
    foo(order);
    ...
}

func foo(order){
    payOrder = new v1{orderNo=order.orderNo, amt=order.amt, remark='结算资金下发'}; //通过order得到v1;
    pay(payOrder)    ;
}

func pay(payOrder){
    ...
}

 

 

 

如果是你,当如何进行重构?

 

 

 

 

没错,这段程序存在的问题是“存在重复代码”。我们在重构时,应以简单、清晰、易读、已维护为宗旨。能充分理解这一点,也并不容易,需要功力。

就像上面同学的重构方案那样,引入新的方法 foo,毋庸置疑达到了“消除重复”的目的,不过,这在一定程度上,增加了程序的复杂性。

许多同学,包括你,必然明白,下面是正确姿势。

本案是一个非常简单的程序重构案例。实际企业应用开发过程中,我们遇到的场景远比这个要复杂。以此为例,希望大家加强对代码重构的理解,从复杂的代码分析出条理,发现存在的问题,并进行更有效的重构。

func a(){
    ...
    order = ***;
    pay(order);
    ...
}

func b(){
    ...
    order = ***;
    pay(order);
    ...
}

func pay(order){
    payOrder = new v1{orderNo=order.orderNo, amt=order.amt, remark='结算资金下发'}; //通过order得到v1;
    pay(payOrder)    ;
    ...
}

 

标签:重构,...,pay,payOrder,案例,谈谈,func,orderNo,order
From: https://www.cnblogs.com/buguge/p/18297959

相关文章

  • AI赚钱案例:AI绘画项目《动物时装秀》,抖音号14天粉丝增长11万
    0****1赚钱思路抖音号“陈导不挑食”通过AI绘画技术创作独特的《动物时装秀》内容,结合社交媒体平台的运营策略,实现粉丝快速增长和内容变现。适合人群:此项目适合对AI绘画和社交媒体营销感兴趣的个人或团队,尤其是那些希望在艺术创作和内容创作领域实现快速增长的创作......
  • 异步请求技术--Ajax(教你彻底学会Ajax,关键细节,原生Ajax,应用案例详解,最易懂图文讲解!!! 建
    1.什么是Ajax1.AJAX即"AsynchronousJavascriptAndXML"(异步JavaScript和XML)2.Ajax是一种浏览器异步发起请求(指定发哪些数据),局部更新页面的技术Ajax在线3文档 重点是XHR创建XHR请求XHR响应!等1.1 一图胜千言 2.Ajax的通信原理......
  • VUE购物车案例
    目标效果1、创建vm对象绑定class=app的标签,创建goodlist和buyGoods变量2、html页面编写for循环指令,将goodlist中的数据取出来3、全选和全不选,计算总价https://blog.csdn.net/kouryoushine/article/details/87984749https://blog.csdn.net/mutouren121/article/detail......
  • GRE详解:概念、架构、原理、搭建过程、常用命令与实战案例
       我们将深入探讨如何在Linux上设置GRE(GenericRoutingEncapsulation,通用路由封装)。本文将涵盖GRE的定义、架构、原理、应用场景、常见命令体系,并通过详细的实战模拟展示如何在Linux系统上实际操作。希望通过这篇文章,您能深入理解GRE技术,并能在实际中应用。......
  • 写代码总被Dis:5个项目案例带你掌握SOLID技巧,代码有架构风格
    SOLID原则图单一职责原则是基础,确保每个类只关注一件事情。开闭原则建立在单一职责原则之上,强调通过扩展而不是修改现有代码来添加新功能。里氏替换原则确保继承体系的健全性,让派生类可以安全地替换基类。接口隔离原则避免让客户端依赖于它们不需要的接口,提高了接口的可......
  • Python爬虫实战案例,从入门到进阶,零基础教程!
    这篇文章我们介绍了一下Python中的正则表达式和与爬虫正则相关的re模块,本章我们就利用正则表达式和re模块来做一个案例,爬取《糗事百科》的糗事并存储到本地。我们要爬取的网站链接是 https://www.qiushibaike.com/text/page/1/ 。我们要爬取的是里面的糗事,在之前......
  • 分析逆向案例十三——拍拍贷登录密码逆向和JS原型链
    网址:拍拍贷登陆页面,找登陆包,密码和用户名都进行了加密。直接参数搜索,一眼下面的第二条,直接点击进入加密位置打上断点分析,一个加密嵌套另一个加密。中间的e.md5好像是md5加密,打印一下看看 现在都记住了,这就是小写的md5加密。好了,解决了一个,进入encrypt函数。发现是一......
  • Vue 中 v-pre、v-once、v-cloak 标签的深度解析与案例展示
    目录v-prev-once​​​​​​​v-cloak​​​​​​​v-cloak介绍​​​​​​​插值表达式闪烁问题v-pre        当使用v-pre指令时,不会进行编译操作。所有的Vue模板语法都将得以完整保留,并会按照其初始的形态进行渲染。其中,最为常见的应用场景便是......
  • 入门PHP就来我这(高级)22 ~ 七天免登录案例
    有胆量你就来跟着路老师卷起来! --纯干货,技术知识分享路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。  上文讲述了cookie的概念,创建,获取,销毁以及生命周期后,我们利用本文来实现一个小的案例,实现七天免登录的案例。 七天免登录功能案例1......
  • 华为MLD的介绍配置实例以及配置案例分析-(值得收藏)
    一、华为MLD的介绍华为MLD(MulticastListenerDiscovery)指的是在华为网络设备上实现的IPv6组播侦听者发现协议。MLD是IPv6版本的IGMP(InternetGroupManagementProtocol),用于在IPv6网络中管理和控制组播流。它主要用于在IPv6主机和直接相连的路由器之间建立和维护组播组成......