# 冗余代码识别与删除计划

## 可以立即删除

适用条件：代码确认无用，且已通过引用搜索确认没有调用方。

| 字段 | 内容 |
|------|------|
| **位置** | `path/to/file:line` |
| **删除原因** | 无用代码 / 冗余分支 / 已被替代 |
| **证据** | 无引用 / 路径失效 / 接口已过时 |
| **影响范围** | 无 / 极低 |
| **需要同步清理** | 相关测试、配置、文档 |
| **删除后验证** | 跑哪些测试、检查哪些日志或监控指标 |

## 暂不删除，制定计划

适用条件：代码看起来可以删，但存在不确定因素（仍有调用方、需要迁移、归属不明确）。

| 字段 | 内容 |
|------|------|
| **位置** | `path/to/file:line` |
| **现在不能删的原因** | 仍有调用方 / 需要迁移 / 归属不清 |
| **前置条件** | 删除前必须先完成什么 |
| **迁移计划** | 安全的执行顺序（如：先新增替代实现 → 迁移调用方 → 删旧代码） |
| **验证方式** | 用 `rg` 确认无引用 / 观察相关日志 / 检查监控指标 |
| **回滚方案** | 出问题如何恢复 |

## 删除前检查表

- 用 `rg` 或等价工具搜索全部直接引用
- 排查动态引用（反射、字符串拼接、配置文件中的类名/方法名）
- 确认外部调用方（其他服务、脚本、CI/CD pipeline）不再依赖
- 更新或删除相关测试
- 更新相关文档和配置
- 如果是对外接口，确认已完成 deprecation 通知和迁移窗口

## 排查思路

判断是否可以删除时，依次问自己：

- 这段代码是真的无用，还是引用关系暂时没有找到（动态加载、反射、外部服务调用）？
- 删除后，哪些运行路径、配置项、脚本或外部调用方会受影响？
- 现在直接删，还是先补迁移计划？哪种风险更低？
- 如果证据还不完整，不下"可以立即删除"的结论，改为制定计划。
