圣诞大减价开始了!

重复的代码

迹象和症状

两个代码片段看起来几乎相同。

问题的原因

重复通常发生在多个程序员同时处理同一个程序的不同部分时。由于他们正在处理不同的任务,他们可能没有意识到他们的同事已经编写了类似的代码,这些代码可以重新用于他们自己的需求。

还有更微妙的重复,代码的特定部分看起来不同,但实际上执行相同的工作。这种复制很难发现和修复。

有时复制是有目的的。当急于赶时间,而现有的代码“几乎适合”这项工作时,新手程序员可能无法抵抗复制和粘贴相关代码的诱惑。在某些情况下,程序员只是懒得整理。

治疗

  • 如果在同一个类的两个或多个方法中发现相同的代码:使用提取方法而place在两个位置都调用新方法。

  • 如果在同一级别的两个子类中发现了相同的代码:

    • 使用提取方法对于两个类,后面都是上拉场用于您正在调出的方法中使用的字段。

    • 如果重复的代码在构造函数中,则使用上拉构造器本体

    • 如果重复的代码相似但不完全相同,则使用表单模板法

    • 如果两种方法做同样的事情,但使用不同的算法,选择最好的算法并应用替换算法

  • 如果在两个不同的类中发现重复的代码:

    • 如果类不是层次结构的一部分,请使用提取超类为了为这些类创建一个单一的超类来维护之前的所有功能。

    • 如果很难或不可能创建超类,请使用提取类在一个类中使用新组件,在另一个类中使用新组件。

  • 如果存在大量的条件表达式并执行相同的代码(只是条件不同),则使用巩固条件表达式和使用提取方法将条件放置在具有易于理解名称的单独方法中。

  • 如果在条件表达式的所有分支中执行相同的代码:将相同的代码置于条件树之外,使用合并重复的条件片段

回报

  • 合并重复的代码可以简化代码的结构并使其更短。

  • 简化+简短=代码更容易简化,支持成本更低。

何时忽略

  • 在极少数情况下,合并两个相同的代码片段会使代码不那么直观和明显。
Baidu
map