重构
定义
重构是一种规范的技术,用于重构现有代码体,在不改变其外部行为的情况下改变其内部结构。
它的核心是一系列小的行为保持转换。每个转换(称为“重构”)作用不大,但这些转换的序列可以产生重大的重构。由于每次重构都很小,因此出错的可能性较小。每次重构后系统都保持完全正常工作,减少了系统在重构过程中被严重破坏的机会。
实践出处
在已发表的文献中首次使用“重构”一词是在 1990 年 9 月William Opdyke和Ralph Johnson的一篇文章中。 格里斯沃尔德博士 论文,Opdyke 博士 1992年发表的论文也使用了这个术语。
为什么
重构活动有两大类好处:
可维护性。更容易修复错误,因为源代码易于阅读并且其作者的意图易于掌握。这可以通过将大型单一例程减少为一组单独的简洁、命名良好、单一用途的方法来实现。可以通过将方法移至更合适的类或删除误导性注释来实现。
可扩展性。如果应用程序使用可识别的设计模式,则更容易扩展应用程序的功能,并且它提供了一些以前可能不存在的灵活性。
何时使用
-
重构作为日常编程的一部分。
2. 在添加新功能时进行重构。 -
在修改Bug时进行重构。
-
在代码复审时进行重构。
到了最后的交付期限,不进行重构
如何使用
-
封装成员变量(英语:Field encapsulation)(Encapsulate Field):将仅限于本类使用的变量重写成私有(private)成员变量,并提供访问方法(accessor method)。这种重构方式可以将与外部调用者无关的变量隐藏起来,减少代码的耦合性,并减少意外出错的概率。
-
提取方法(Extract Method):意思是将大段代码中的一部分提取后,构成一个新方法。这种重构可以使整段程序的结构变得更清晰,从而增加可读性。这也对函数(Function)通用。
-
类一般化(英语:Type generalization)(Generalize Type):将多个类/函数共用的类型抽象出可以公用的基类(base class),然后利用多态性追加每个类/函数需要的特殊函数。这种重构可以让结构更加清晰,同时可以增加代码的可维护性。
-
函数归父(Pull Up)或函数上移:指的是方法从子类移动到父类。
-
函数归子(Push Down)或译函数下移:指的是方法从父类移动到子类。
-
方法更名(英语:Rename_method)(Rename Method):将方法名称以更好的表达它的用途。
输出物
重构之后的代码
参考资料
-
马丁·福勒:《重构:改进现有代码的设计》,Addison-Wesley Professional 1999, ISBN 978-0-201-48567-7
-
https://www.cnblogs.com/wmyskxz/p/10990059.html
-
https://en.wikipedia.org/wiki/Code_refactoring#Benefits
-
https://zh.m.wikipedia.org/zh-hans/%E4%BB%A3%E7%A0%81%E9%87%8D%E6%9E%84
我们非常重视知识产权,我们在非常努力地寻找最初的出处来源并注明出处。但因为互联网信息浩瀚,难免会有疏漏。如果您觉得有侵犯您的权益,请联系我们。