真实操作案例软件开发与编程
重构遗留代码: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 输入框提交,由在线模型读取资料并调用工具实际执行。本例核对本地演示任务与实际生成的文件,结果和检查方法见下文。
产物、结果与复核
输入
读取到工作空间中的 legacy.py,其 summarize(rows) 接收订单字典列表,先跳过 cancelled 订单,再按 region 累加 int(qty) * int(price_cents)。工作空间还提供了 ENVIRONMENT.md,说明本次为 Windows 独立演示目录。
本轮先实际复现了用户指出的输入:[{"cancelled": True}]。
处理步骤
- 复现旧版和原新版对取消订单缺字段输入的行为差异。
- 在
refactored.py中调整处理顺序:先判断取消标记,再解析订单字段。 - 保留已有回归测试,补充取消订单缺字段和非法金额的新旧行为对比测试。
- 运行完整回归测试、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
下载本次实际产物