用 Claude Code 整理旧订单模块的一次记录
假设你接手了一个旧订单模块:同一个函数里既计算折扣,又检查库存,还负责保存订单。它仍然能用,但每次修改都让人犹豫。第一次使用 Claude Code,不妨把目标缩小为:只整理折扣计算,让下一次修改更容易理解,不顺便改变订单规则。
这次工作的重点不是让代码看起来更新,而是弄清楚哪些行为必须保留。我们可以把整个过程分成几个能随时停下来的小步骤。
§ 先留下一份能回去的版本
开始前,建议新建一个开发分支,把当前工作保存为一次清楚的提交。如果项目已经有测试,先运行相关测试并记录结果。如果原本就有失败项,先把它们与本次任务区分开,不要让一次整理代码的工作变成没有边界的修复。
也建议提前划定禁止触碰的内容:真实客户资料、生产密钥、线上数据库,以及与折扣计算无关的配置。本次练习只使用脱敏样例,不安排发布或数据迁移。
§ 让它先解释,不急着修改
Claude Code 的官方工作流包含阅读项目、查找相关文件和追踪调用关系。面对陌生模块,可以先让它建立一张简短的说明,而不是立刻生成替代代码。([code.claude.com](https://code.claude.com/docs/en/common-workflows))
可以这样提出请求:“请阅读订单模块及调用它的代码,说明折扣计算的输入、返回值和外部依赖。列出你不能确定的地方,暂时不要修改文件。”
接着检查它的解释。假如它说优惠券可以叠加,就要求它指出对应的判断条件。如果代码与业务说明不一致,先记录这个问题。本次重构不负责猜出哪一种规则更合理,也不要把不熟悉的分支直接当作多余代码删除。
§ 把现有行为变成检查清单
官方文档建议明确测试要验证的行为,并为边界条件补充用例;Claude Code 也可以参考项目已有的测试结构来编写测试。([code.claude.com](https://code.claude.com/docs/en/common-workflows))
对于这个订单模块,建议先列出几种值得核对的情况:
- 没有优惠券时,订单金额如何计算。
- 刚好达到折扣门槛时,是否应用优惠。
- 优惠券过期或订单金额为零时,返回什么结果。
- 金额出现小数时,在哪一步处理精度。
然后给出更具体的请求:“请沿用现有测试工具,为这些情况补充测试。预期结果先根据旧实现整理出来,遇到矛盾请说明,不要为了让测试通过而修改业务代码。”
先审查预期结果,再接受测试。这里的目的,是为旧行为留下可检查的记录,而不是让模型同时决定规则、编写实现,再宣布自己的实现正确。若发现明显缺陷,另开一个修复任务,并写清楚准备改变什么行为。
§ 一次只拆出一个职责
Claude Code 官方建议把重构拆成小而可测试的增量,并在需要时明确要求保留兼容性。([code.claude.com](https://code.claude.com/docs/en/common-workflows))
本次可以只提取折扣计算函数,保留订单模块对外的函数名、参数和返回结构。请求可以写成:“只提取折扣计算,不修改数据库访问、库存检查或接口字段,不新增依赖。完成后列出改动文件,运行相关测试,并解释哪些行为保持不变。”
如果它建议同时更换测试框架、调整目录或重写整个订单流程,先把这些建议记下来,不纳入这次修改。判断是否继续的标准,不是方案看起来是否完整,而是这一步能否独立阅读、独立验证、独立撤回。
§ 把检查结果留在提交里
Anthropic 的实践建议强调,明确的验证方法有助于 Claude Code 检查工作。对初学者来说,最好给出项目实际使用的测试命令,而不是只说“确认没有问题”。([anthropic.com](https://www.anthropic.com/engineering/claude-code-best-practices?trk=feed_main-feed-card_feed-article-content&utm_source=openai))
修改完成后,建议自己阅读文件差异,重点检查金额精度、异常处理、默认值和调用顺序。要求它报告实际执行的命令与结果;如果测试因环境缺失没有运行,就明确记为未验证,不要把“已生成测试”当作“测试已通过”。
最后留下一段简短记录:提取了什么、刻意没有改什么、哪些测试通过、还有哪些情况需要人工确认。确认这一小步之后再提交,下一次会话再处理库存检查或保存逻辑。
§ 接入方式放在流程之外
如果希望通过统一入口使用开发工具,Vana API 提供面向 Claude Code 的接入方式,同一服务也提供适用于 OpenAI 兼容客户端和 Gemini 原生请求的入口。开始前应按对应工具的说明选择配置,不要把不同协议的路径混用。([vanaapi.com](https://vanaapi.com/))
Claude Code 支持通过网关连接模型,但网关仍是需要单独配置和评估的第三方服务。建议先检查项目的数据使用要求,再用不含敏感信息的小任务验证连接。([code.claude.com](https://code.claude.com/docs/en/llm-gateway))
准备尝试时,可以创建一个 Vana API 账户,从一个边界清楚的旧函数开始。第一次重构的合适终点,不是整个模块焕然一新,而是你能解释每一处修改,也知道出现问题时怎样退回去。