Refactoring 重构的目标?

Refactoring 重构的目标?,refactoring,Refactoring,重构代码的目标是什么?这仅仅是为了增强代码结构吗?这是否为未来的变革铺平了道路? 降低单个功能的复杂性-使测试更容易 消除重复代码—减少出错的机会 消除/减少“代码气味” 任何开发人员都更容易理解代码 使其可维护 增加内聚力和减少耦合” 我通常不会仅仅为了减少代码气味,或者让代码更“好”/更易于维护而重构代码。当我需要修复错误时,我会重构代码,我想让代码保持比以前更好的状态。另一个原因是当我想添加功能时,如果不进行重构就很难做到。第三个原因是让代码更易于测试。有时候我通过重构来学习我不懂的代码

重构代码的目标是什么?这仅仅是为了增强代码结构吗?这是否为未来的变革铺平了道路?

  • 降低单个功能的复杂性-使测试更容易
  • 消除重复代码—减少出错的机会
  • 消除/减少“代码气味”
  • 任何开发人员都更容易理解代码
  • 使其可维护
  • 增加内聚力和减少耦合”

  • 我通常不会仅仅为了减少代码气味,或者让代码更“好”/更易于维护而重构代码。当我需要修复错误时,我会重构代码,我想让代码保持比以前更好的状态。另一个原因是当我想添加功能时,如果不进行重构就很难做到。第三个原因是让代码更易于测试。有时候我通过重构来学习我不懂的代码:-)

    在一个非常基本的层面上,目标是改进代码,使其更可读、更少耦合、降低错误率,等等


    在另一个层面上,重构是作为BigUpfrontDesign的替代品出现的。在极端编程等环境中使用重构也是一种义务。你每天、每小时都要为你的技术部门支付抵押贷款。再加上集体代码所有权的原则,它还让每个人负责在任何地方重构代码,而不仅仅是自己编写(或共同编写)的代码。

    重构可以有多重激励:

    • 提高代码可读性
    • 简化代码结构
    • 提高可维护性
    • 提高可扩展性
    开始重构的原因通常取决于您遇到的问题

    如果你扩展了你的软件,却偶然发现了bug,而你却找不到bug的来源,那么你可能会开始重构以简化代码结构,从而使开发人员更容易追踪bug

    有时错误来自于一个函数/类/…它的使用与预期不符。这表明代码不容易理解或文档记录不好


    现在,如果您改进了文档、代码的可读性和代码的结构,您也将获得更好的可维护性…

    当然,当您确信永远不必再接触一段代码时,就不需要重构该代码了

    但大多数时候,你必须再次触摸它,因为你必须添加功能、修复bug或优化它


    因此,是的,这当然是为未来的变化铺平道路。代码总是在变化。

    可理解性

    更直观、组织良好(考虑因素)的代码更容易理解

    正确性

    通过更容易理解的代码中的检查更容易识别缺陷。过于复杂、结构不良、Rube Goldberg风格的代码更难检查缺陷。此外,组件高度一致且组件之间松散耦合的组件化代码更容易进行测试。此外,测试中更小、格式良好的位使得测试用例之间的代码覆盖范围重叠更少,从而实现更快、更可靠的测试(这成为一个自我强化的循环,推动测试越来越好)。此外,更直接的代码往往更可预测、更可靠

    易于维护和升级

    功能完善、质量高、易于理解的通用组件更易于使用、扩展和维护。对系统的许多更改现在更易于进行,因为它们的影响更小,而且如何进行适当的更改更为明显



    就代码质量和正确性问题而言,重构代码本身确实有其优点,但重构带来最大回报的是软件设计的维护和改进。在向旧的、分解不好的代码中添加新功能时,通常一个好策略是重构目标代码,然后添加新功能。这通常会比起在不进行重构的情况下添加新功能,我需要更少的开发工作,而且这是一种提高代码库质量的简便方法,而无需进行大量的“空中楼阁”“假设优势重构/重新设计工作很难向管理层证明其合理性。

    代码重构是观察变化不可避免这一事实的必要条件。它的主要目标是增强当前的代码或设计,使其符合新的功能性或非功能性需求,或使其更能容忍更改

    可能需要重构的场景示例:

  • 引入新的业务规则,要求将当前设计抽象到新的层次
  • 认识到可以修改当前设计,以便更好地遵守面向对象设计的原则
  • 当需要增加代码的可测试性时——这与上面的2有关
    重构用于支付您的费用。

    以降低更改成本。

    一般来说,我只会重构生产代码以重用它或在需要修改时进行重构

    例如,出于性能原因,我需要更新一个函数,但没有一个简单的测试接口,因此我将其重构为一个单独的模块,该模块可以更容易地进行单元测试,然后进行更改,以便重新运行测试,并显示它与以前一样工作

    重构不需要更改的代码会导致灾难;它肯定会引入bug

    重构的目标

    逾越节

    说真的,我这样做是为了:

    • 避免代码重复(遵循以下原则)
    • 简化代码(删除不必要的特殊复杂性,请参阅)
    • 删除旧的/过时的/不推荐使用的代码(一旦旧代码被替换,就会清除废物)