code-smell-2-重复代码

在所有这些臭味中排在第一位的就是重复代码。如果你不止在一个地方看到相同的代码结构,那么你可以确信如果你找到一个方法将它们统一会让你的程序变得更好。


最简单的重复代码问题是在同一个类的两个方法中你有同样的表达式。然后你需要做的就是Extract Method然后在两个地方分别调用。


另外一个常见的重复代码问题是在两个兄弟子类中你有相同的表达式。你可以通过分别在两个子类中Extract Method然后Pull Up Field。如果这两块儿代码看起来只是相似当不相同,那么你就需要利用Extract Method来将相同部分和不同部分分离开来。然后你可能会发现你可以使用Form Template Method。如果这两个方法做的是同样的事但是实现的逻辑不一样,你可以选择其中更清晰的一个并且使用Substitute Algorithm来替换另一个。


如果在两个不相关的类中有重复代码,考虑通过对其中一个类使用Extract Class,然后再另一个类中使用新的类中的方法。另外一种可能情况是这个方法真的是应该属于其中某一个类,并且应该由别的类来调用;或者这个方法应该属于第三个类,这两个类都应该去调用第三个类中的这个方法。你必须去考虑这个方法放在哪里是有意义的,确保它应该在那而不是别的什么地方。


原文链接:https://sourcemaking.com/refactoring/duplicated-code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值