「译」代码重构的原则和意义?

Posted by Peter Dong on September 17, 2022

译自: https://www.techtarget.com/searchapparchitecture/definition/refactoring

什么是重构?

重构是对代码进行重新组织的过程, 但不改变它的原始功能. 重构的目标是通过进行许多小的改变来改进内部代码, 而不会改变代码的外部行为.

计算机程序员和软件开发人员重构代码以改进软件的设计,结构和实现. 重构提高了代码的可读性并降低了复杂度. 重构还可以帮助软件开发人员发现隐藏在软件中的错误或漏洞.

重构过程包含对程序源代码进行许多小的改变. 例如,一种重构的方法是在一个点改进源代码的结构, 然后将相同的改变系统地扩展到程序中所有适用的引用.思想是, 对一个代码体进行所有小的, 保留行为的改变都会产生累积效应. 这些改变保留了软件的原始行为, 不会修改其行为.

Martin Fowler是重构之父, 他将软件开发行业的许多最佳实践整合到了一个特定的重构列表中,并在他的[<重构:改善现有代码的设计>](https://martinfowler.com/books/refactoring.html)一书中描述了如何实施这些重构方法.

重构的目的何在?

重构通过改进代码使其变得:

  • 更高效的处理依赖关系和复杂性
  • 通过提高效率和可读性使得可维护性或可重用性更高.
  • 更干净,更易于阅读和理解.
  • 使软件开发人员更容易在代码中找到并修复错误或漏洞.

代码修改是在不改变程序本身任何功能的情况下完成的.许多基本的编辑环境都支持类似重命名函数或变量的简单重构操作.

img

何时应该重构代码?

重构可以在产品部署后进行, 也可以在向现有代码添加更新和新功能之前进行, 或者作为日常编程的一部分进行.

当在部署后进行这个过程时, 通常是在开发人员进入下一个项目之前进行的. 在软件交付生命周期的这个阶段, 组织可能会有更多的时间来修改源代码, 因此开发人员可以有更多的时间来处理所需的源代码更改.

然而,进行重构的最佳时间是在向现有代码添加更新或新功能之前. 在这个时候进行重构使开发人员更容易在现有代码上进行构建, 因为他们正在回头简化代码, 使其更容易阅读和理解.

如果组织对重构流程有很好的掌握, 就可以将其作为一个常规流程. 每当开发人员需要向代码库添加东西时, 他们都可以查看现有代码, 看看它的结构是否能使添加新代码的过程变得简单明了. 如果不是, 开发人员就可以对现有代码进行重构. 一旦添加了新代码, 开发人员可以再次重构相同的代码, 使其更清晰.

重构的好处有哪些?

重构可以提供以下好处.

  • 使得代码更容易理解和阅读,因为目标是简化代码,减少复杂度.
  • 提高可维护性,更容易发现错误或做进一步的修改.
  • 鼓励对代码有更深入的理解.开发人员必须进一步思考他们的代码将如何与代码库中已有的代码混合.
  • 重点仍然只放在功能上.不改变代码的原始功能,保证了原始项目不会走样.

重构的挑战有哪些?

然而, 在这个过程中确实存在挑战. 其中一些包括:

  • 如果一个开发团队项目紧急, 而重构又没有计划, 那么这个过程将需要额外的时间.
  • 如果没有明确的目标, 重构会导致延迟和一些额外的工作.
  • 重构本身不能解决软件的缺陷, 因为它的目的是使代码干净并减少复杂性.

执行代码重构的技巧

组织可以在不同情况下使用不同的重构技术. 一些例子包括:

  • 红色,绿色::这种在敏捷开发中广泛使用的重构方法包括三个步骤. 首先, 开发人员确定需要开发的内容; 第二,他们让项目通过测试; 第三,他们重构该代码以进行改进.
  • 内联: 这种技术的重点是通过消除不必要的元素来简化代码.
  • 在对象之间移动功能: 这种技术创建新的类, 同时在新旧数据类之间移动功能.
  • 提取: 这种技术将代码分解成较小的片段, 然后将这些片段移到不同的方法中. 碎片化的代码被替换为对新方法的调用.
  • 抽象重构: 这种技术减少了重复代码的数量. 当有大量的代码需要重构的时候, 就会这样做.
  • 组合: 这种技术简化了代码,使用多种重构方法减少重复, 包括提取和内联.

代码重构的最佳实践

重构要遵循的最佳实践包括.

  • 为重构制定计划: 否则可能很难为这种耗时的做法腾出时间.
  • 优先重构: 开发人员应该在向现有代码添加更新或新功能之前做这件事, 以减少技术债务.
  • 逐渐重构: 这可以在过程的早期给开发人员反馈, 以便他们可以发现可能的错误,并包括业务要求.
  • 设定明确的目标: 开发人员应该在代码重构过程的早期确定项目范围和目标. 这有助于避免延误和额外的工作, 因为重构的意图是进行内部整理, 而不是改变功能或特性的机会.
  • 经常测试: 这有助于确保重构后的变化不会引入新的错误.
  • 在可能的情况下实现自动化: 自动化工具使重构更容易和更快,从而提高了效率.
  • 单独修复软件缺陷: 重构并不意味着解决软件缺陷.应该单独进行故障排除和调试.
  • 理解代码: 查看代码以理解其过程,方法,对象,变量和其他元素.
  • 定期进行重构,修补和更新: 当重构能够解决一个重要的问题而不需要花费太多的时间和精力时, 重构就能产生最大的回报.
  • 专注于代码去重: 代码重复增加了复杂性, 扩大了软件的范围, 浪费了系统资源.

Buy Me a Coffee