Skip to main content
QUICK REVIEW

[论文解读] An Empirical Study of the Relationships between Code Readability and Software Complexity

Duaa Alawad, Manisha Panta|arXiv (Cornell University)|Aug 30, 2019
Software Engineering Research参考文献 18被引用 13
一句话总结

本实证研究分析了35个Java程序,探讨代码可读性与软件复杂性之间的关系,采用六项可读性度量指标和两项复杂性度量指标。研究证实可读性与复杂性之间存在强烈负相关关系,并利用机器学习方法识别出显著降低可读性的关键代码结构,如嵌套循环和复杂条件语句,同时对它们的影响程度进行排序。

ABSTRACT

Code readability and software complexity are important software quality metrics that impact other software metrics such as maintainability, reusability, portability and reliability. This paper presents an empirical study of the relationships between code readability and program complexity. The results are derived from an analysis of 35 Java programs that cover 23 distinct code constructs. The analysis includes six readability metrics and two complexity metrics. Our study empirically confirms the existing wisdom that readability and complexity are negatively correlated. Applying a machine learning technique, we also identify and rank those code constructs that substantially affect code readability.

研究动机与目标

  • 通过实证方法检验真实世界Java程序中代码可读性与软件复杂性之间的关系。
  • 识别出显著影响可读性和复杂性的具体代码结构。
  • 通过可测量的度量指标量化各种代码结构对可维护性的影响。
  • 应用机器学习技术,根据其对可读性的影响对代码结构进行排序。
  • 通过提供基于数据的洞察,支持软件工程实践,以编写更具可维护性的代码。

提出的方法

  • 本研究分析了35个包含23种不同代码结构的开源Java程序。
  • 应用了六项可读性度量指标(如标记数、嵌套深度、注释密度)和两项复杂性度量指标(如圈复杂度、认知复杂度)。
  • 数据通过静态代码分析和人工检查收集,以确保准确性。
  • 训练了一个机器学习模型(随机森林)以基于代码结构和复杂性度量预测可读性。
  • 利用模型的特征重要性得分,对每种代码结构对可读性的影响力进行排序。
  • 通过统计分析(包括相关性和回归分析)验证可读性与复杂性之间的关系。

实验结果

研究问题

  • RQ1代码可读性与软件复杂性之间的相关性性质和强度如何?
  • RQ2哪些具体的代码结构对代码可读性造成最显著的负面影响?
  • RQ3不同代码结构的组合如何影响整体代码可读性?
  • RQ4机器学习模型能否有效基于结构和语法特征预测代码可读性?
  • RQ5复杂性度量在多大程度上能够解释可读性感知差异?

主要发现

  • 发现代码可读性与软件复杂性之间存在强烈负相关关系,证实复杂性越高,可读性越低。
  • 嵌套循环和复杂条件语句被确定为对可读性最具破坏性的前两位代码结构。
  • 嵌套深度高且认知复杂度高的代码结构在所有分析程序中均显著降低了可读性评分。
  • 机器学习模型在基于代码结构识别可读性等级方面实现了超过80%的预测准确率。
  • 注释密度和使用描述性变量名被发现能适度提升可读性,但无法抵消结构复杂性带来的负面影响。
  • 在本数据集中,圈复杂度与可读性降低的相关性强于认知复杂度。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。