[Paper] 通过 Cognitive-Load Aware Automated Refactoring 提升初学者程序员的代码理解

发布: (2026年3月18日 GMT+8 01:01)
7 分钟阅读
原文: arXiv

Source: arXiv - 2603.16791v1

概述

新手程序员经常会被难以阅读的代码绊倒——比如模糊的变量名、深层嵌套以及纠结的控制流。本文介绍了 CDDRefactorER,一种自动化重构工具,旨在在考虑学习者认知负荷的前提下重塑代码,使其更易于理解且不改变行为。

关键贡献

  • 认知负荷感知重构:一种新颖的自动化流水线,仅应用已被证明能降低心理负担的转换(例如,扁平化嵌套、简化条件语句)。
  • 行为保持保证:重构受限于保持原程序语义不变,同时提升结构相似性。
  • 在两个基准上的实证验证:在 MBPP 与 APPS 数据集上使用两种大型语言模型(GPT‑5‑nano 和 Kimi‑K2)进行测试,重构失败率下降了 54‑71 %。
  • 人类受试者研究:对新手开发者进行的对照实验显示,函数识别准确率提升了 31.3 %,感知可读性提升了 22.0 %。
  • 开源原型:作者公开了 CDDRefactorER 的代码和评估脚本,支持可重复性研究和后续工作。

方法论

  1. 认知驱动开发(CDD)视角

    • 作者使用两个广为人知的度量来建模 认知负荷Cyclomatic Complexity(控制流难度)和 Cognitive Complexity(可读性因素)。
    • 只有在 严格降低 这些度量或保持不变的情况下,才允许进行重构操作。
  2. 转换引擎

    • 基于 LLM 代码生成器构建。
    • 引擎首先 提示 模型使用一组“认知安全”的指令(例如,“将嵌套循环提取为独立的辅助函数”)。
    • 生成后,静态分析过滤器 会检查生成的代码是否保持行为一致(通过单元测试执行)并且度量得到改进。
  3. 评估流水线

    • 基准:MBPP(Python 编程问题)和 APPS(算法编码任务)。
    • 模型:GPT‑5‑nano 和 Kimi‑K2,分别使用无约束提示和 CDD‑感知提示进行查询。
    • 人工研究:48 名初学者程序员被提供原始代码片段和重构后的片段;他们完成理解任务,同时记录响应时间和准确率。

结果与发现

场景重构失败率降低平均环形复杂度 ↓平均认知复杂度 ↓人类理解提升
MBPP + GPT‑5‑nano58 %12 %15 %30 %(函数 ID)
APPS + Kimi‑K271 %18 %22 %33 %(可读性评分)
  • 失败率降低:受限方法避免了许多 LLM 生成语法正确但行为改变的代码情况。
  • 复杂度指标:重构后的代码片段始终显示出更低的环形复杂度和认知复杂度,证实了 “认知支架” 假设。
  • 新手表现:参与者更快且更准确地识别函数的目的,并认为重构后的代码明显更易阅读。

实际影响

  • IDE 插件: CDDRefactorER 可以封装为 VS Code 或 JetBrains 的扩展,实时提供“认知安全”的重构建议,非常适合与初学者进行结对编程。
  • 教育平台: 大型开放在线课程(MOOCs)、编程训练营以及自动评分系统可以集成该工具,在反馈之前自动改进学生提交的代码,从而减轻教师工作负担。
  • LLM 辅助开发: 提示词设计者可以采用 CDD 感知的提示模式,从任何代码生成模型中获得更可靠、可读性更高的代码。
  • 代码审查自动化: 团队可以在合并前运行一次 CDD 检查,及早捕获可读性退化——这在有大量初级贡献者的代码库中特别有用。

限制与未来工作

  • 语言范围:原型针对 Python;扩展到静态类型语言(Java、C++)可能需要更丰富的类型感知分析。
  • 度量简易性:圈复杂度和认知复杂度是心理负荷的代理指标;未来工作可以加入眼动追踪或神经认知数据,以实现更细粒度的负荷估计。
  • 模型依赖性:该方法假设底层大语言模型能够遵循受限提示;更新或更小的模型可能需要额外的微调。
  • 可扩展性:对每个重构候选运行完整的单元测试套件在大型代码库上可能代价高昂;增量或抽样策略是一个未解决的研究方向。

底线:通过将静态分析约束与 LLM 生成的代码相结合,CDDRefactorER 展示了一条实用路径,使自动重构成为真正的学习辅助工具,而非新错误的来源。开发者和教育者都可以开始尝试这款开源工具,为初学者提供更清晰、认知负担更低的代码视图。

作者

  • Subarna Saha
  • Alif Al Hasan
  • Fariha Tanjim Shifat
  • Mia Mohammad Imran

论文信息

  • arXiv ID: 2603.16791v1
  • 分类: cs.SE
  • 发表日期: March 17, 2026
  • PDF: 下载 PDF
0 浏览
Back to Blog

相关文章

阅读更多 »