这是一项破坏性重构技能,用于移除向后兼容层与遗留代码,适合 API 现代化、清理迁移债务、删除兼容垫片等场景。
主要原则:不做半吊子迁移;迁移方向只允许旧到新,不新增新到旧的适配器;删除前先测绘所有消费者;不留“以防万一”的代码;兼容垫片必须有移除日期,否则应视为架构。
执行前先做侦察,盘点 @deprecated / #[deprecated] / warnings.warn 标记、版本门控代码路径、适配器/垫片/桥接/包装层、双序列化格式、仅用于验证兼容行为的测试、切换新旧行为的配置键、转发模块以及承诺弃用时间线的变更日志。
是否断开可根据信号判断:无外部消费者、单一自有消费者、测试覆盖良好、已有清晰新路径时可断开;公共 API 且消费者未知、边界无测试、消费者多且归属不明、兼容层仍在迁移中被使用时,不应贸然断开。
执行策略:用 ast-grep、rg 等工具测绘影响范围;先补齐覆盖旧路径的测试;直接删除旧路径而非注释掉;迁移所有调用点并逐步编译/类型检查;删除孤立测试;搜索字符串引用、配置键、环境变量、文档链接和错误信息中的幽灵;检查仅旧路径使用的死导入与依赖。
反模式包括保留“以防万一”路径、部分迁移、注释而非删除、兼容套兼容、无移除日期的弃用、过时特性开关。验证门槛为影响范围已测绘、删除前测试全绿、删除后旧 API 零引用、无死导入依赖。退出码 0 表示干净断开,1 表示仍有残留引用,2 表示测试被破坏,3 表示发现外部消费者需先制定迁移计划。