重构与迁移
大文件拆分、框架升级辅助。
30 分钟
重构与迁移
重构 是在不改变外部行为的前提下改善结构;迁移(如 Spring 版本升级、包名调整)往往跨多文件。AI 擅长 机械性改写,但 行为等价 必须靠测试与人工 diff 证明。
学习目标
- 用大模型辅助拆分大文件、重命名、升级 API 的可行步骤
- 理解「小步 + 绿测 + commit」比一次 Agent 大改更安全
- 结合 git-essentials 与 testing-essentials
AI 擅长的重构类型
| 类型 | AI 帮助 | 人的责任 |
|---|---|---|
| 提取方法/类 | 生成骨架 | 边界、事务、并发 |
| 重命名符号 | 批量替换建议 | 全仓搜索漏网引用 |
| 升级 deprecated API | 对照迁移指南草稿 | 跑集成测试 |
| 拆 markdown 章节 | 按 outline 切文件 | 链接与术语统一 |
不擅长:隐含业务规则的重构(权限、计费、状态机)——除非有完整测试网。
安全重构流程
1. 绿测 baseline(mvn test / npm test)
2. git checkout -b refactor/xxx
3. AI:单一步骤(如「只提取 FooValidator」)
4. 人工 diff + 测试仍绿
5. git commit -m "refactor: extract FooValidator"
6. 重复 3–5,而非一次改 40 文件
对齐 git-branch:一步一 commit,方便 bisect。
框架升级示例纪律
让 Cursor Agent「把 javax.* 换成 jakarta.*」时:
- 限定 目录范围(如
backend/src/main) - 要求 每包改完编译
- 禁止 Agent 顺手「优化」无关逻辑
升级后跑 test-spring 层级的集成测试,不只单元。
重构 CodeRoadMap 内容
多课 draft 结构调整时:
- 用 Copilot 重排标题层级、统一「学习目标」用语
- 人工 检查 cross-link 是否仍指向正确 slug
- 与 ai-prompt 的分步 prompt 配合
内容重构无 CI 自动测,链接检查脚本 + 人读 是门禁。
反模式
- Big Bang Agent 改仓:难以 review,回滚痛苦
- 无测试重构:AI 改完「看起来对」
- 混功能与重构:同一 PR 里加需求又改结构
练习
- 选一个 100+ 行类,只做「提取一个 private 方法」,走完整 git 流程