ScholarGate
助手

代码质量与重构

代码质量和重构涉及编写可读、可维护、结构良好的源代码,以及在不改变现有代码外部行为的前提下,改进其内部结构的规范技术。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

重构是改变软件系统的一种过程,它不改变软件可观察到的行为,但能改善其内部结构;代码质量是指源代码在可读性、可维护性和良好内部设计方面的程度。

Scope

本主题涵盖代码可读性和命名、代码层面的内聚和耦合、预示设计问题的代码异味、保持行为的重构目录、自动化测试在安全重构中的作用,以及用于评估和执行标准的代码质量度量和静态分析工具。

Core questions

  • 哪些特征使源代码具有可读性和可维护性?
  • 代码异味如何预示需要重构的地方?
  • 如何在不改变行为或引入缺陷的情况下改进结构?
  • 如何衡量代码质量及其随时间的变化?

Key theories

保持行为的重构
重构通过一系列小的、保持行为的转换来改进结构,每次转换都经过测试验证,从而以渐进且安全的方式改进结构,而不是通过有风险的大规模重写。
代码异味作为设计启发式
重复出现的表面症状——长方法、重复代码、大类、依恋情结——作为启发式方法,指示更深层次的设计问题,并建议特定的重构来解决这些问题。

Clinical relevance

高代码质量降低了理解和修改软件的成本,而这在总成本中占主导地位;持续重构使代码库具有适应性,对于维持敏捷开发和控制技术债务至关重要。

Evidence & guidelines

ISO/IEC 25010 规定了可维护性及其他质量属性,静态分析工具根据项目规则强制执行编码标准并检测异味。

History

重构实践于1999年由Fowler系统化,并与测试驱动开发和敏捷方法共同发展,这些方法依赖于持续的、受测试保护的重构;“整洁代码”的工匠精神和自动化静态分析随后强化了代码质量规范。

Debates

重构的合理程度
团队就重构的积极程度进行争论:持续的小改进能保持代码健康但耗费精力,而推迟重构会累积技术债务;平衡取决于代码的寿命和变化率。

Key figures

  • Martin Fowler
  • Kent Beck
  • Robert C. Martin
  • Steve McConnell

Related topics

Seminal works

  • fowler2018
  • mcconnell2004
  • martin2008

Frequently asked questions

重构会改变程序的功能吗?
不会。根据定义,重构会保留可观察的行为;它重构内部结构以提高可读性和设计。自动化测试用于确认每次转换后行为未改变。
如果软件已经可以运行,为什么还要投入代码质量?
系统的大部分成本来自于后期的理解和修改;低质量代码会减慢未来的每一次修改并增加缺陷风险,因此投资质量在软件的整个维护生命周期中都是值得的。

Methods for this concept

Related concepts