首页/开发/代码质量与评审速查/坏味道:重复代码(Duplicated Code)
重构手法62 条

坏味道:重复代码(Duplicated Code)

同一逻辑在多处重复时,修改需要同步多处;先用 Extract Function 合并片段,跨类重复用 Pull Up Method 或 Extract Class;重复的测试代码同样值得处理。

形态同函数内重复 / 兄弟类间 / 无关类间
手法Extract Function、Pull Up Method、Extract Class
注意表面相似但语义不同的代码不要硬合并

提取前

提取前
double a = order.total() * 0.95;
// ... 另一处
result = amount * 0.95;

提取后

提取后
double applyDiscount(double amount) {
    return amount * 0.95;
}

易错点

  • 为消除重复强行抽象:耦合了本会独立演化的两段逻辑
  • 复制粘贴后只改一处:漏改处成为潜伏缺陷

数据来源与参考

  • 《重构》第 2 版 · 第 3 章(Duplicated Code)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌