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

农民  金牌会员 | 2024-7-12 11:12:09 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 881|帖子 881|积分 2643

上伪代码:
  1. func a(){
  2.     ...
  3.     order = ***;
  4.     payOrder = new v1{orderNo=order.orderNo, amt=order.amt, remark='结算资金下发'}; //通过order得到v1;
  5.     pay(payOrder)    ;
  6.     ...
  7. }
  8. func b(){
  9.     ...
  10.     order = ***;
  11.     payOrder = new v1{orderNo=order.orderNo, amt=order.amt, remark='结算资金下发'}; //通过order得到v1;
  12.     pay(payOrder)    ;
  13.     ...
  14. }
  15. func pay(payOrder){
  16.     ...
  17. }
复制代码
 
有同学一眼就看出了题目——重复代码。这同学给的重构方案如下。
  1. func a(){
  2.     ...
  3.     order = ***;
  4.     foo(order);
  5.     ...
  6. }
  7. func b(){
  8.     ...
  9.     order = ***;
  10.     foo(order);
  11.     ...
  12. }
  13. func foo(order){
  14.     payOrder = new v1{orderNo=order.orderNo, amt=order.amt, remark='结算资金下发'}; //通过order得到v1;
  15.     pay(payOrder)    ;
  16. }
  17. func pay(payOrder){
  18.     ...
  19. }
复制代码
 
 
 
如果是你,当如何进行重构?
 
 
 
 
没错,这段程序存在的题目是“存在重复代码”。我们在重构时,应以简朴、清晰、易读、已维护为宗旨。能充分理解这一点,也并不容易,需要功力。
就像上面同学的重构方案那样,引入新的方法 foo,毋庸置疑达到了“消除重复”的目标,不过,这在一定程度上,增加了程序的复杂性。
很多同学,包括你,必然明白,下面是精确姿势。
本案是一个非常简朴的程序重构案例。实际企业应用开发过程中,我们碰到的场景远比这个要复杂。以此为例,盼望大家加强对代码重构的理解,从复杂的代码分析出条理,发现存在的题目,并进行更有效的重构。
  1. func a(){
  2.     ...
  3.     order = ***;
  4.     pay(order);
  5.     ...
  6. }
  7. func b(){
  8.     ...
  9.     order = ***;
  10.     pay(order);
  11.     ...
  12. }
  13. func pay(order){
  14.     payOrder = new v1{orderNo=order.orderNo, amt=order.amt, remark='结算资金下发'}; //通过order得到v1;
  15.     pay(payOrder)    ;
  16.     ...
  17. }
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表