通过一个简单的案例,来谈谈代码的重构
  wTh0bPPZpNwc 2024年08月07日 32 0

 

上伪代码:

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)    ;
    ...
}


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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年08月07日 0

暂无评论

推荐阅读
  VGxawBTN4xmE   2天前   19   0   0 Java
  FHUfYd9S4EP5   4天前   29   0   0 Java
  u8s65Xl4dX8N   7小时前   9   0   0 Java
  qCe06rFCa8NK   7小时前   13   0   0 Java
  ZTo294hNoDcA   4天前   29   0   0 Java
  FHUfYd9S4EP5   4天前   24   0   0 Java
wTh0bPPZpNwc