简介
"删除死代码"(Remove Dead Code)重构手法用于清除代码库中不再发挥作用的代码片段。这些代码可能是由于需求变更、功能迭代或调试残留产生的冗余代码。
典型代码坏味道
- 未被调用的私有方法
- 无法到达的条件分支
- 永远为true/false的条件判断
- 被注释的过期实现
- 未使用的类字段和局部变量
- 遗留的调试日志输出
重构步骤
-
检测死代码
- 使用IDE的代码分析工具
- 检查测试覆盖率报告
- 查看版本控制变更历史
- 执行静态代码分析
-
验证代码状态
- 确认是否被反射调用
- 检查是否被文档引用
- 验证是否为兼容性保留
-
安全删除
- 小批量逐步删除
- 保留版本控制记录
- 更新相关文档注释
-
验证与测试
- 确保持续集成通过
- 检查监控系统报警
- 验证功能回归测试
示例
重构前:
public class Calculator {
private int legacyScale = 10; // 未使用字段
public int add(int a, int b) {
// 调试遗留代码
// System.out.println("Adding: " + a + "+" + b);
return a + b;
}
@Deprecated
private int oldAddMethod(int a, int b) {
return a + b + legacyScale;
}
}
重构后:
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
专项练习
基础练习
-
清理未使用变量
public class Order { private String debugFlag = "DEV"; // 未使用 private LocalDate createDate; public void printDate() { String unusedFormat = "yyyy-MM"; // 未使用 System.out.println(createDate.toString()); } }
进阶练习
-
处理废弃API
public class PaymentService { /** @deprecated 使用processNewPayment代替 */ public void processPayment(Order order) { validateLegacy(order); chargeCreditCard(order); } private void validateLegacy(Order order) { // 无调用方 } }
代码审查清单
优势验证
- 代码行数减少20%-40%
- 静态分析警告减少50%以上
- 代码可读性显著提升
风险提示
- 可能误删动态调用的代码
- 需要保留版本回退能力
- 注意文档与代码的同步更新