我用 Claude Code 重构了一个祖传项目,三天干完原计划两周的活
一个三年没人动的内部管理系统,PHP 写的,前端 jQuery,数据库连外键都没有。Claude Code 让我从搬砖工变成了监工。
# 我用 Claude Code 重构了一个祖传项目,三天干完原计划两周的活
上个月接了个烂摊子——一个三年没人动的内部管理系统,PHP 写的,前端 jQuery,数据库连外键都没有。老板说"两周内上线新版本",我心里骂娘但嘴上答应了。
然后 Claude Code 救了我的命。
不是广告,是真实的救命经历
先说结论:Claude Code 不是让你躺平的,它是一个超级快的手,但你得当脑子。
我试过直接让它"重构这个项目",结果它给出的方案跟面试八股文一样漂亮,但完全没法落地。后来我换了个策略——**拆碎任务,每个任务给足上下文**,效率直接起飞。
第一步:让它先读代码,别急着动手
很多人一上来就让 AI 改代码,这是最大的坑。你得先让它"理解"项目:
# 在项目根目录启动 Claude Code
claude
# 先让它读明白项目结构
> 分析一下这个项目的整体架构,列出所有模块和它们之间的依赖关系
这一步我花了大概 20 分钟,让它把整个项目的调用链理清楚。它会自己去读文件,比你在 IDE 里一个个点开快 10 倍。
关键产出:它给我画了一张模块依赖图(文本格式的),我一眼就看出有两个模块循环依赖——这 bug 我找了三个月没找到原因。
第二步:逐模块重构,每次只给一个模块
我的重构顺序是**从叶子节点开始**——没有下游依赖的模块先动:
> 现在重构 user_auth 模块。要求:
> 1. 把 session 认证换成 JWT
> 2. 密码存储从 MD5 换成 bcrypt
> 3. 保持所有现有 API 接口不变
> 4. 注意 line 47 的那个 hash 校验别动了,下游有系统在用
注意最后一条——这是我自己踩过的坑。第一次让它重构时没说"别动那个 hash",结果它把一个被外部系统调用的校验逻辑也改了,联调的时候隔壁组的人过来找我"喝茶"。
**教训:边界条件必须人工指定,AI 不会猜到隐式依赖。**
第三步:写测试比写代码更重要
重构最怕什么?改了 A 坏了 B。Claude Code 写代码很快,但它写的代码你敢直接上线吗?
我的做法:
> 为 user_auth 模块写单元测试,覆盖:
> 1. JWT 生成和验证
> 2. 密码哈希和校验
> 3. Token 过期处理
> 4. 旧的 MD5 密码兼容迁移(重要!)
它写的测试覆盖率大概 80%,剩下 20% 是边界 case——比如并发的 token 刷新、极端的输入字符串。这些得自己补。
但 80% 的测试如果让我手写,至少半天。Claude Code 写了 15 分钟。
真正踩过的坑
坑1:上下文窗口不够用
项目文件太多,Claude Code 偶尔会"忘记"之前说过的约束。我的解法:
# 在项目根目录创建 CLAUDE.md
# 这个文件会在每次对话开始时自动加载
echo "## 项目约束
这个文件是我用 Claude Code 的**最佳实践**,没有之一。省了多少重复解释。
坑2:它偶尔会"幻觉"API
有一次它给我写了个 Redis 的用法,用了个 Redis::delete() 方法——这个方法在 PHPRedis 5.0 之后已经被废弃了。如果不是我刚好踩过这个坑,上线就是一个 deprecation warning 满天飞。
**所以:每次它引入一个你不确定的 API,去查一下官方文档。别偷懒。**
坑3:大文件重构容易"断片"
一个 2000 行的控制器,让 Claude Code 重构,它有时候会漏掉中间某几行。我后来改成分步骤:
> 先把这个 2000 行的控制器拆分成 5 个小文件,按照职责来分
> 文件1: AuthController - 只管认证相关
> 文件2: UserController - 用户 CRUD
> ...
拆完之后再逐个文件重构,出错率大幅下降。
实际的时间对比
| 任务 | 手动估计 | 用 Claude Code | 节省 |
|------|---------|---------------|------|
| 代码阅读和依赖梳理 | 4h | 0.5h | 87% |
| 模块重构(5个模块) | 16h | 6h | 62% |
| 测试编写 | 8h | 2h | 75% |
| Bug 修复和联调 | 8h | 5h | 37% |
联调阶段节省最少,因为很多问题不是代码层面的,是业务逻辑的隐式约定——这种东西 AI 真的帮不了你。
我现在的工作流
经过这次重构,我现在用 Claude Code 的流程已经稳定了:
2. **先读后写**——让 AI 先理解代码,再动手改
3. **小步提交**——每改完一个模块,跑测试,提交 git
4. **自己当 reviewer**——AI 写的代码,每一行我都过一遍
5. **边界条件自己补**——并发、极端输入、兼容性,这些靠人
最后说句大实话
Claude Code 是我现在日常开发的主力工具,但它不能替代你的经验判断。它能让你从"搬砖"升级到"监工"——你指挥它搬砖,你负责确保墙砌对了方向。
如果你的项目架构一团糟、没有测试、没有文档——恭喜,这正是 Claude Code 最能发挥的场景。它不怕脏活累活,但它需要你告诉它正确的方向。
三天干完两周的活,不是因为我变强了,是因为搬砖的活终于不用我自己干了。
VkingAI