代码重构技术

是时候修改代码了吗? 以下是一些有关如何在不牺牲功能的情况下改善代码外观的技术。


代码重构是软件开发中的关键术语之一,今天,我想谈一谈可能提高效率的代码重构技术!

但是首先,让我们就什么是代码重构达成一致。 基本上,代码重构是更改程序源代码而不修改其外部功能行为的过程,目的是改善软件的某些非功能属性。 换句话说,代码重构是在不更改其行为的情况下阐明和简化现有代码设计的过程。

如今,从本质上讲, 敏捷软件开发已成为必须,而敏捷团队则需要在迭代之间反复维护和扩展其代码,并且如果不进行连续重构,则很难做到这一点。 这是因为未重构的代码容易腐烂:类或包之间的不健康依赖关系,类职责分配不当,每个方法或类的职责过多,重复的代码以及许多其他种类的混乱和混乱。

因此,优点包括提高了代码的可读性和降低了复杂性。 这些可以改善源代码的可维护性,并创建更具表达力的内部体系结构。

马丁·福勒(Martin Fowler)和肯特·贝克(Kent Beck)是最近在软件开发领域最具影响力的两个人,他撰写了有关重构的书,名为 重构:改进现有代码的设计 ”。 我强烈建议您阅读它,绝对值得!

本书描述了重构的过程,并花费了大部分时间来解释如何进行各种重构-保留行为的转换。 在本书中,您将找到描述整个过程的简单示例。 关于重构,建议重构的“代码味道”以及测试的作用也存在着更广泛的问题,您也可以在本书中找到这些问题。 我最喜欢这本书的地方是详细描述了70种重构和代码重构技术:进行重构的动机,如何安全地进行重构的机制。

正确进行代码重构技术的一些技巧

代码重构应通过一系列小的更改来完成,每一个小的更改都会使现有代码稍有改善,同时仍使程序保持正常工作。 不要将一大堆重构混为一谈,在进行重构时,一定要使用TDD和CI进行重构。 如果在重构的每个小步骤之后都无法运行这些测试,则存在引入错误的风险。代码应该变得更简洁。重构期间不应创建新功能。 不要混用重构和直接开发新功能。 尝试至少在单个提交的范围内将这些过程分开。

代码重构的好处

看全图

如果您有一个主要的方法可以处理所有功能,那么它很可能太长且非常复杂。 但是,如果将其分解成几部分,则很容易看到实际执行的操作。

使团队可读

让同龄人容易理解,不要自己写,要长期思考。

可维护性

更新和升级的集成是一个不可避免的连续过程,应该受到欢迎。 当代码库是无组织的并且建立在较弱的基础上时,开发人员通常会犹豫进行更改。 但是通过代码重构,组织代码,该产品将建立在一个干净的基础上,并为将来的更新做好准备。

效率

代码重构可能被认为是投资,但它取得了良好的效果。 您或您或其他开发人员可以减少将来更改代码所需的工作量,从而提高效率。

降低复杂度

使您和您的团队更轻松地从事该项目。

主要代码重构技术列表

有很多代码重构技术,我不想覆盖所有这些技术,因为这篇文章最终将变成一本书。 因此,我决定选择我们认为最常见和最有用的方法。

红绿重构

让我们首先简要讨论非常流行的红绿色代码重构技术。 红绿重构是敏捷工程模式的基础,是测试驱动开发的基础。 它以“测试优先”的设计和实现方法为特征,为所有形式的重构奠定了基础。 您可以从失败的“红色”测试开始,将重构合并到测试驱动的开发周期中,编写可能的最简单代码以使测试通过“绿色”,并最终在改进和增强代码的同时保持测试“绿色”。 ”

这种方法是关于如何将重构无缝集成到您的整个开发过程中以及如何保持代码干净的方法。 这有两个不同的部分:编写向系统添加新功能的代码,以及改进执行此功能的代码。 重要的是要记住在工作流程中不要同时执行两项操作。

准备重构

作为开发人员,您可以对代码库做一些事情,以使构建下一个功能更加轻松。 马丁·福勒(Martin Fowler)将此称为预备重构。 再次可以使用上述的红绿色技术执行该操作。 准备性重构还可能涉及偿还在功能开发的早期阶段积累的技术债务。 即使最终用户可能不会与工程团队在这种努力上保持一致,但开发人员几乎总会欣赏到良好的重构工作的价值。

通过抽象重构进行分支

抽象有其自己的重构技术组,主要与沿类继承层次结构移动功能,创建新的类和接口以及用委托替换继承相反,反之亦然。 例如:上拉字段,上拉方法,上拉构造函数主体,下推字段,下推方法,提取子类,提取超类,提取接口,折叠层次结构,表单模板方法,将继承替换为委托,将委托替换为Inheritance,等等

重构工作分为两种类型:基于范围和复杂性。 通过抽象进行分支是一些团队用来进行大规模重构的技术。 基本思想是构建一个抽象层,该抽象层包装要重构的系统部分以及最终将要替换的部分。 例如:

  • 封装字段-强制代码使用getter和setter方法访问字段,
  • 通用类型—创建更多通用类型以允许更多代码共享,将类型检查代码替换为状态,将条件替换为多态等。

组成方法重构

大量重构致力于正确地构成方法。 在大多数情况下,过长的方法是万恶之源。 这些方法内部的代码多变,掩盖了执行逻辑,使方法极难理解,甚至难以更改。 该组中的代码重构技术简化了方法,消除了代码重复。 示例可以是:提取方法,内联方法,提取变量,内联Temp,用查询替换Temp,拆分临时变量,删除对参数的分配等。

在对象重构之间移动特征

这些代码重构技术展示了如何在类之间安全地移动功能,创建新类以及如何从公共访问中隐藏实现细节。 例如:移动方法,移动字段,提取类,内联类,隐藏委托,删除中间人,引入外来方法,引入本地扩展等。

简化条件表达式重构

随着时间的流逝,条件逻辑的逻辑趋于变得越来越复杂,并且有更多的技术来应对这种情况。 例如:合并条件表达式,合并重复的条件片段,分解条件,用多态替换条件,删除控制标志,用保护子句替换嵌套的条件等。

简化方法调用重构

这些技术使方法调用更容易理解。 这简化了类之间交互的接口。 例如:添加参数,删除参数,重命名方法,与修饰符分开的查询,参数化方法,引入参数对象,保留整个对象,删除设置方法,用显式方法替换参数,用方法调用替换参数等。

将代码分解为更多的逻辑重构

组件化将代码分解为可重用的语义单元,这些语义单元提供了清晰,定义明确,易于使用的界面。 例如:extract类将部分代码从现有类移到新类的extract方法中,以将较大方法的一部分转换为新方法。 通过将代码分解成较小的部分,它更容易理解。 这也适用于功能。

用户界面重构

对UI的简单更改将保留其语义,例如:对齐输入字段,应用通用按钮大小,应用字体,指示格式,以活动语音重新编写单词并增加颜色对比度等。

以下是一些代码重构技术的示例; 其中一些可能仅适用于某些语言或语言类型。 更长的列表可以在我们上面讨论的Martin Fowler的重构书中找到。

如果您在任何类型的开发项目中需要帮助,我也可以为您提供有关项目的咨询。 我是最受好评的自由职业者。 您可以直接在 Upwork 上雇用我 你也可以 雇用我   自由职业者

如果您有任何评论,问题或建议,请随时在下面的评论部分中发布它们!

From: https://hackernoon.com/code-refactoring-techniques-j71n32t0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值