下载全书

重构

0
2
11037

定义

重构是一种规范的技术,用于重构现有代码体,在不改变其外部行为的情况下改变其内部结构。

它的核心是一系列小的行为保持转换。每个转换(称为“重构”)作用不大,但这些转换的序列可以产生重大的重构。由于每次重构都很小,因此出错的可能性较小。每次重构后系统都保持完全正常工作,减少了系统在重构过程中被严重破坏的机会。

实践出处

在已发表的文献中首次使用“重构”一词是在 1990 年 9 月William Opdyke和Ralph Johnson的一篇文章中。 格里斯沃尔德博士 论文,Opdyke 博士 1992年发表的论文也使用了这个术语。

为什么

重构活动有两大类好处:

可维护性。更容易修复错误,因为源代码易于阅读并且其作者的意图易于掌握。这可以通过将大型单一例程减少为一组单独的简洁、命名良好、单一用途的方法来实现。可以通过将方法移至更合适的类或删除误导性注释来实现。

可扩展性。如果应用程序使用可识别的设计模式,则更容易扩展应用程序的功能,并且它提供了一些以前可能不存在的灵活性。

何时使用

  1. 重构作为日常编程的一部分。
    2. 在添加新功能时进行重构。

  2. 修改Bug时进行重构。

  3. 代码复审时进行重构。

到了最后的交付期限,不进行重构

郑乔尹 2023-03-08 17:34:24

如何使用

  • 封装成员变量(英语:Field encapsulation)(Encapsulate Field):将仅限于本类使用的变量重写成私有(private)成员变量,并提供访问方法(accessor method)。这种重构方式可以将与外部调用者无关的变量隐藏起来,减少代码的耦合性,并减少意外出错的概率。

  • 提取方法(Extract Method):意思是将大段代码中的一部分提取后,构成一个新方法。这种重构可以使整段程序的结构变得更清晰,从而增加可读性。这也对函数(Function)通用。

  • 类一般化(英语:Type generalization)(Generalize Type):将多个类/函数共用的类型抽象出可以公用的基类(base class),然后利用多态性追加每个类/函数需要的特殊函数。这种重构可以让结构更加清晰,同时可以增加代码的可维护性。

  • 函数归父(Pull Up)或函数上移:指的是方法从子类移动到父类。

  • 函数归子(Push Down)或译函数下移:指的是方法从父类移动到子类。

  • 方法更名(英语:Rename_method)(Rename Method):将方法名称以更好的表达它的用途。

输出物

重构之后的代码

参考资料

  1. 马丁·福勒:《重构:改进现有代码的设计》,Addison-Wesley Professional 1999, ISBN 978-0-201-48567-7

  2. https://www.cnblogs.com/wmyskxz/p/10990059.html

  3. https://en.wikipedia.org/wiki/Code_refactoring#Benefits

  4. https://zh.m.wikipedia.org/zh-hans/%E4%BB%A3%E7%A0%81%E9%87%8D%E6%9E%84

我们非常重视知识产权,我们在非常努力地寻找最初的出处来源并注明出处。但因为互联网信息浩瀚,难免会有疏漏。如果您觉得有侵犯您的权益,请联系我们。

更新时间:
2023-03-08
版本号: 13
重构 19 更新时间:2024-08-12
重构 17 更新时间:2023-03-08
重构 16 更新时间:2023-03-08
重构 15 更新时间:2023-03-08
重构 14 更新时间:2023-03-08
请提出您的意见
通过审核后显示您的意见

文章导航

定义
实践出处
为什么
何时使用
如何使用
输出物
参考资料

主要贡献人

荆修梅

项目经理

实践被点赞 6

实践被收藏 0

加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线