![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
重构学习笔记
秋千不会坠
啦啦啦
展开
-
重构改善既有代码的设计学习笔记——代码坏味道整理
重复代码过长函数过大的类过长参数列发散式变化:应对外界某一个变化时,某一类需要修改的东西太多霰弹式修改:应对外界某一个变化时,需要修改很多很多的类依恋情结:A类中的方法对于B类感兴趣的程度超过A类本身数据泥团:在很多地方出现相同的数据项(方法参数,两个类中相同的字段)基本类型偏执:代码中缺少小型对象,除了基本类型就是体积庞大的结构体(如数据库表对象)switch语句平行集成体...原创 2019-01-25 14:07:23 · 164 阅读 · 0 评论 -
重构手法列表——重新组织函数
提炼函数(Extract Method)现象:有一段代码可以被组织在一起并独立出来重构动机:粒度小的函数,复用性比较高;会使得高层函数看起来就像注释一样;细粒度的函数,复写起来比较容易做法:根据函数的意图来命名新的函数,重点在于能否取出一个有意义的名字。内联函数(Inline Method)现象:一个函数的本体与名称同样清楚易懂重构动机:非必要的间接性会带来非必要的复杂度做法:在函数...原创 2019-01-25 15:33:58 · 279 阅读 · 0 评论 -
重构手法列表——在对象之间搬移特性
搬移函数(Move Method)现象:有函数与其所驻类之外的另一个类进行更多交流:调用后者或被后者调用动机:两个类并无太多合作,但是出现了高度耦合。做法:在该函数最常引用的类中建立一个有着类似行为的新函数。将旧函数变成一个单纯的委托函数,或是将旧函数完全移除搬移字段(Move Field)现象:某个字段被其所驻类之外的另一个类更多地用到动机:把职责迁移到更适合它的地方去做法:在目标...原创 2019-01-26 10:45:24 · 648 阅读 · 0 评论 -
重构手法列表——重新组织数据
自封装字段(Self Encapsulate Field)现象:直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙动机:当直接访问类里面的字段不能满足需求时(比如需要延迟初始化),可以通过封装方法来获取字段做法:为这个字段设置get/set函数,并用这些函数来访问字段以对象取代数据值(Replace Data Value with Object)现象:一个数据项需要与其他数据和行为一起...原创 2019-01-27 14:39:51 · 579 阅读 · 0 评论 -
重构手法列表——简化条件表达式
分解条件表达式(Decompose Conditional)现象:有一个复杂的条件语句动机:有复杂的条件表达式会使代码可读性下降做法:从if then else三个段落中分别提炼出独立函数合并条件表达式(Consolidate Conditional Expression)现象:一系列条件测试都得到相同的结果动机:合并代码后使逻辑更加清晰做法:将这些测试合并为一个条件表达式,并将这个...原创 2019-01-28 15:10:01 · 257 阅读 · 0 评论 -
重构手法列表——简化函数调用
函数改名(Rename Method)现象:函数的名称未能揭示函数用途动机:一个好的名称对程序解释起到非常大的作用做法:修改函数名称添加参数(Add Parameter)现象:某个函数需要从调用端得到更多的信息动机:需要信息做法:为此函数添加一个对象函数,让该对象带进函数所需信息移除参数(Remove Parameter)现象:函数本体不需要某个参数动机:多余无用的参数,会让函...原创 2019-01-28 17:31:33 · 248 阅读 · 0 评论 -
重构手法列表——处理概括关系
字段上移(Pull Up Field)现象:两个子类拥有相同的字段动机:去除重复声明;去除重复行为做法:将该字段移至超类函数上移(Pull Up Method)现象:有些函数,在各个子类中产生完全相同的结果动机:去除重复行为做法:将该函数移至超类构造函数本体上移(Pull Up Constructor Body)现象:各个子类中拥有一些构造函数,它们的本体几乎完全一致动机:去除...原创 2019-01-29 11:19:25 · 343 阅读 · 0 评论 -
重构手法列表——大型重构
梳理并分解集成体系(Tease Apart Inheritance)现象:某个继承体系同时承担两项责任动机:混乱的继承会使得修改变得困难,并使得代码难以理解。此外这种不好的现象也极容易蔓延(添加很多很多的子类)做法:建立两个继承体系,并通过委托关系让其中一个可以调用另一个将过程化设计转化为对象设计(Convert Procedural Design to Objects)现象:出现了一些...原创 2019-02-13 14:27:12 · 995 阅读 · 0 评论 -
重构改善既有代码的设计学习笔记——重构中的tips整理
重构原则如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易,然后再添加特性重构前,先检查自己是否有一套可靠的测试机制,这些测试必须有自我检验能力重构技术就是以微笑的步伐修改程序。如果你犯下错误,很容易便可发现它任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员重构(名词形式):对软件内部...原创 2019-02-13 14:37:36 · 147 阅读 · 0 评论