真实操作案例软件开发与编程

重构遗留代码:Tokeny 实操案例

保留行为重构订单统计函数,拆分解析、金额计算和分组逻辑;先写回归测试,再对新旧实现做结果比较。

作者:Tokeny 团队 · Windows · Tokeny 1.7.8 · gpt-6-sol

准备这次任务的输入

在 Tokeny 中新建工作空间,将下载的样例解压到工作空间,选择支持工具调用的模型。本例使用合成演示数据或文中列出的公开资料。

  • legacy.py
下载输入样例

把任务交给 Tokeny

保留行为重构订单统计函数,拆分解析、金额计算和分组逻辑;先写回归测试,再对新旧实现做结果比较。

交付文件:refactored.py、test_refactor.py、refactor.md。
验收要点:
- 覆盖空列表、取消订单和同地区累加
- 金额仍使用整数分
- 实际测试通过
这是使用合成演示输入或指定公开资料的真实操作案例。请先读取工作空间输入,再实际生成文件并自检。所有写入、脚本与临时服务限于当前工作空间;临时服务只监听 127.0.0.1,执行后关闭;不触达外部收件人、不发布、不付款、不更改系统设置,不调用子智能体。需要公开资料时可读取给定 URL。只启用完成任务必需的工具。另写 report.md(中文)和 report.en.md(英文),简洁、完整,包含输入、处理步骤、真实结果、检查方式和局限;失败或未验证部分如实记录,不能宣称成功。最终回复用中文列出产物、关键结果与待核实项。
复核后追加的任务(1 次)
复核发现重构存在行为回归:legacy.summarize([{cancelled: True}]) 会直接跳过并返回 {},而新版先 parse_order,读取缺失的 region/qty/price_cents,会抛异常。Python 示例应使用 {"cancelled": True}。请先实际复现,修复为对取消订单在字段解析前跳过,补充取消订单缺字段和非法金额的回归测试,对比新旧行为。保留已有通过的测试,更新双语报告如实记录修复与测试数量,无需固定字数。

本次使用独立演示工作空间。复现时,请根据自己的文件与权限设置检查操作,确认后继续。

实际执行过程

任务从 Tokeny 输入框提交,由在线模型读取资料并调用工具实际执行。本例核对本地演示任务与实际生成的文件,结果和检查方法见下文。

Tokeny 1.7.8 中「重构遗留代码」的真实执行会话与生成文件。点击可查看原图。
Tokeny 1.7.8 中「重构遗留代码」的真实执行会话与生成文件。点击可查看原图。

产物、结果与复核

输入

读取到工作空间中的 legacy.py,其 summarize(rows) 接收订单字典列表,先跳过 cancelled 订单,再按 region 累加 int(qty) * int(price_cents)。工作空间还提供了 ENVIRONMENT.md,说明本次为 Windows 独立演示目录。

本轮先实际复现了用户指出的输入:[{"cancelled": True}]。

处理步骤

  1. 复现旧版和原新版对取消订单缺字段输入的行为差异。
  2. 在 refactored.py 中调整处理顺序:先判断取消标记,再解析订单字段。
  3. 保留已有回归测试,补充取消订单缺字段和非法金额的新旧行为对比测试。
  4. 运行完整回归测试、Python 语法编译检查,并独立比较两类边界输入。

真实结果

  • 修复前复现:旧版返回 {};原新版抛出 KeyError: 'region'。
  • 修复后:取消订单缺字段时新旧均返回 {}。
  • 非法金额输入时新旧均抛出相同的 ValueError,错误消息一致。
  • 回归测试:7 项全部通过,耗时约 0.002 秒。
  • 语法检查:legacy.py、refactored.py、test_refactor.py 均通过 py_compile。
  • 固定随机输入:100 组新旧结果全部相等。
  • 金额类型:有效金额仍使用整数分和 Python int。

检查方式

执行命令:

python -m unittest -v test_refactor.py
python -m py_compile legacy.py refactored.py test_refactor.py

并通过独立 Python 脚本直接调用 legacy.summarize 与 refactored.summarize,比较取消订单缺字段和非法金额两类输入的结果或异常类型及消息。

局限

未覆盖其他缺失字段组合、复杂异常对象、性能基准及并发测试。对于未取消订单的缺字段行为,本次仅保持原实现的异常语义,没有新增输入校验。

下载产物,自己核对

压缩包保存本次执行生成的文件。替换成自己的资料后,可以按下面的检查点验收。

  • 覆盖空列表、取消订单和同地区累加
  • 金额仍使用整数分
  • 实际测试通过
refactored.py · 1 KBtest_refactor.py · 3 KBrefactor.md · 2 KBreport.md · 2 KBreport.en.md · 2 KB
下载本次实际产物

继续探索同类场景