← 返回博客
·AI工具

我用 Claude Code 重构了一个祖传项目,三天干完原计划两周的活

一个三年没人动的内部管理系统,PHP 写的,前端 jQuery,数据库连外键都没有。Claude Code 让我从搬砖工变成了监工。

#Claude Code#AI编程#代码重构#实战

# 我用 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 "## 项目约束

  • 数据库使用 MySQL 5.7,不支持窗口函数
  • 所有 API 必须保持向后兼容
  • user_auth 模块的 legacy_hash() 函数不能改
  • 代码风格:PSR-12" > CLAUDE.md
  • 这个文件是我用 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 的流程已经稳定了:

  • **先 CLAUDE.md**——把项目约束、编码规范、已知坑点全写进去
  • 2. **先读后写**——让 AI 先理解代码,再动手改

    3. **小步提交**——每改完一个模块,跑测试,提交 git

    4. **自己当 reviewer**——AI 写的代码,每一行我都过一遍

    5. **边界条件自己补**——并发、极端输入、兼容性,这些靠人

    最后说句大实话

    Claude Code 是我现在日常开发的主力工具,但它不能替代你的经验判断。它能让你从"搬砖"升级到"监工"——你指挥它搬砖,你负责确保墙砌对了方向。

    如果你的项目架构一团糟、没有测试、没有文档——恭喜,这正是 Claude Code 最能发挥的场景。它不怕脏活累活,但它需要你告诉它正确的方向。

    三天干完两周的活,不是因为我变强了,是因为搬砖的活终于不用我自己干了。