重构---需要重构的地方-----Duplicated Code(重复代码)

本文探讨了五种常见的重复代码情况及其解决方案。包括同一类内的重复表达式、子类间的重复代码、相似但不完全相同的代码块、不同算法实现相同功能的函数,以及不相关类中的重复代码。通过提炼方法、函数上移、模板方法模式和替换算法等重构技术,可以有效地消除重复代码,提高代码复用性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、最简单的情况

 

同一个类中,两个函数含有相同的表达式。

 

解决:这时候就要提出相同的代码,让这两个地方都调用这段被提炼出来的代码。

运用方法:Extract Method(提炼方法)

 

2、另一种常见的情况

 

两个互为兄弟的子类内还有相同的表达式。

 

解决:先提炼出重复的代码,进行封装------------Extract Method(提炼方法)

在把提炼出来的代码推入到超类内-----------Pull Up Method(函数上移)

要用这段被提炼出来的代码时,就调用父类的。

 

3、如果两个互为兄弟的子类内含有的代码之间只是类似。

 

解决:将相似和差异的代码分开,构成一个单独的函数(相似的代码)。--Extract Method(提炼方法)

这时可能就用一个模版方法模式来解决我们的问题了。---------------Form Template Method(塑造模版函数)

 

4、如果有些函数以不同的算法做相同的事。

 

解决:选择一个最清晰的函数,将其他函数的算法替换掉----Subtitute Algorithm(替换算法)

 

5、如果两个毫不相关的类出现重复代码。

 

解决:应该考虑对其中的一个类,将重复的代码提炼出来。提炼到一个独立的类。-----Extract Method(提炼方法)

在另一个类要使用这段代码的时候,调用这个新类。

 

问题递进:有时重复的代码所在的函数,也可能的确只应该属于该类。其他的类若要想用这段代码,就只能引用这个类了。但是你必须确定好这个共用的函数放在哪儿最合适(也就是哪个类里),放下了就不要再动了。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值