重构

作者: CaptainJno | 来源:发表于2017-11-01 09:40 被阅读0次

重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性。降低其修改成本。

重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。

一、重构,第一个案例

如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。

重构前,先检查自己是否有一套可靠的测试机制。这些测试必须有自我检验能力。

进行重构的时候,我们需要依赖测试,让它告诉我们是否引入了bug。好的测试是重构的根本。

重构步骤的本质:重构技术就是以微小的步伐修改程序。如果你犯下错误,很容易便可发现它

任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。

二、重构原则

为何重构:1、重构改进软件设计;2、重构使软件更容易理解;3、重构帮助找到bug;4、重构提高编程速度;

何时重构:1、三次法则(事不过三,三则重构);2、添加功能时重构;3、修补错误时重构;4、复审代码时重构;

间接层是把双刃剑,间接层的价值:1、允许逻辑共享;2、分开解释意图和实现;3、隔离变化;4、封装条件逻辑;

三、代码的坏味道

1、重复代码(Duplicated Code)

2、过长函数(Long Method)

3、过大的类(Large Class)

4、过长参数列(Long Parameter List)

5、发散式变化(Divergent Change)

6、散弹式修改(Shotgun Surgery)

7、依恋情节(Feature Envy)

8、数据泥团(Data Clumps)

9、基本类型偏执(Primitive Obsession)

10、switch惊悚现身(Switch Statements)

11、平行继承体系(Parallel Inheritance Hierarchies)

12、冗赘类(Lazy Class)

13、夸夸其谈未来性(Speculative Generality)

14、令人迷惑的暂时字段(Temporary Field)

15、过度耦合的消息链(Message Chains)

16、中间人(Middle Man)

17、狎昵关系(Inappropriate Intimacy)

18、异曲同工的类(Alternative Classes with Different Interfaces)

19、不完美的库类(Incomplete Library Class)

20、纯稚的数据类(Data Class)

21、被拒绝的遗赠(Refused Bequest)

22、过多的注释(Comments):当你感觉需要撰写注释时,请先尝试重构,试着让所有注释都变得多余。

相关文章

  • 代码重构专题(转载)

    代码重构(一):函数重构规则代码重构(二):类重构规则代码重构(三):数据重构规则代码重构(四):条件表达式重构规...

  • 重构代码之美

    什么是重构; 为什么要重构; 什么时候重构; 怎样避免重构的现象; 重构的难点在哪里; 如何来实施代码重构; 重构...

  • 30 - 重构之代码解耦

    重构可以分为大规模高层重构(简称“大型重构”)和小规模低层次重构(简称“小型重构”)。大型重构是对系统、模块、代码...

  • 重构、重构、重构

    【待完成】

  • 重构

    为何重构? 1.重构改进软件设计 2.重构使软件更容易理解 3.重构帮助找到bug 4.重构提高编程速度 何时重构...

  • Effective Refactoring in C++ (二)

    如何实施重构 稍微复杂的重构,基本都是由一系列的重构手法组成. 《重构》一书中针对各种重构场景,给出了大量的重构手...

  • 代码重构流程

    目录 重构功能名称 需求整理 需求评审 设计方案 设计评审 代码重构 重构验收 汇总意见 重构功能名称 待重构功能...

  • 把《重构》变成工具书

    前言一、把它变成工具书二、概述何谓重构注释为何重构何时重构重构、架构和YAGNI重构与软件开发过程重构与性能如何重...

  • 《重构》一书总结(二)

    《重构》一书总结(二) 重构的重点,在于对那些代码进行重构,如果重构不当,反而适得其反。 重构代码终结如下 1.D...

  • 《重构》一书经典总结(一)

    《重构》一书经典总结(一) 为何重构 1.重构改进软件设计2.重构使软件更容易理解3.重构提交稿编程速度4.重构帮...

网友评论

      本文标题:重构

      本文链接:https://www.haomeiwen.com/subject/vdjwpxtx.html