返回
Refactoring for Novices in Java: An Eye Tracking Study on the Extract vs. Inline Methods
DOI:10.1016/j.jss.2026.112825.png)
摘要
En 中文
开发者提取方法旨在使代码更易读、易理解和易复用。内联操作将逻辑保持在单一代码块中,而方法提取则将功能隔离到命名的单元中,这是一种常见实践。尽管先前使用静态指标的研究未发现这些实践间的显著差异,但代码理解和导航中的人为因素仍需深入探讨。代码指标可能无法捕捉其他动态方面,例如方法提取对开发者视觉努力的影响。因此,我们旨在通过基于追踪参与者眼动交互的动态方法,研究内联方法和提取方法重构对代码理解的影响。通过眼动追踪,我们分析关键代码区域,比较视觉努力、阅读行为、注视持续时间和回访模式,以考察引入或删除短方法等小结构变化如何影响代码可理解性。我们进行了一项受控实验,招募32名Java新手,并在任务后进行简短访谈,以捕捉他们的困难、策略和印象。每位参与者完成8个简单任务,包括4个内联方法和4个提取方法的程序。我们通过测量时间、尝试次数和视觉努力(注视持续时间、注视次数和回退次数)进行比较。此外,我们还对58名额外新手进行了调查,以获取定量和定性数据。我们发现,虽然传统指标(如时间)揭示了显著百分比变化,但眼动指标的变化更为显著;在两项编程任务中,方法提取提高了理解度并减少了视觉努力,时间最多减少78.8%,回退次数减少84.6%。然而,对于简单任务(如计算正方形面积),结果相反:时间最多增加166.9%,回退次数增加200%。这表明,即使是命名良好的方法也可能干扰新手线性推理,并需要耗费较高的视觉导航。我们发现,有意义的函数名(信标)在重构背景下并不总能提高Java新手对代码的理解。尽管存在有意义的名称,参与者仍需在方法调用与其提取方法之间来回导航,导致视觉努力和认知处理时间增加。为补充分析,我们调查了58名额外新手关于其偏好和印象。虽然许多人因可读性和复用性而偏好提取版本,但部分偏好与其表现不一致,凸显了感知与实际理解之间的差距。将这些指标与参与者反馈及偏好相结合表明,提取方法引入的模块化可能因增加导航需求而延缓新手的问题解决速度。我们观察到注视转换次数增加,这可能打断新手的思维流。我们的发现补充了先前研究,对教育者提出了在向Java新手应用过早模块化时需谨慎的建议,并强调了理解何时以及为谁应用每种重构的必要性。对研究者而言,本研究强调了眼动追踪在揭示静态指标可能无法捕捉影响方面的价值。
Keyword:
Method Extraction
Inline Method
Code Comprehension
Eye Tracking
Refactoring
期刊
IF:
4.1
论文数:
5.5K
被引数:
8.4K
机构
引用论文
Through (Tracking) Their Eyes: Abstraction and Complexity in Program Comprehension通过 (跟踪) 他们的眼睛: 程序理解中的抽象和复杂性
Predicting Code Comprehension: A Novel Approach to Align Human Gaze with Code using Deep Neural Networks预测代码理解:一种利用深度神经网络将人眼视线与代码对齐的新方法

