![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
重构
「已注销」
这个作者很懒,什么都没留下…
展开
-
重构-改善既有代码设计-重构原则(2)
神马是重构?从两方面来说:一个是名词:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。一个是动词:使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。对重构的扩展:1.重构的目的是使软件更容易被理解和修改。(注意和性能优化的区别,会使代码难以理解)2.重构不会改变软件可观察行为--重构之后软件功能一如既往。两顶帽子...原创 2018-11-19 21:03:21 · 321 阅读 · 0 评论 -
重构-改善既有的代码设计(10-2)
10.11.隐藏函数(Hide Method)10.12.以工厂函数取代构造函数(Replace Constructor with Factory Method) 10.13.封装向下转型(Encapsulate Downcast)10.14.以异常取代错误码(Replace Error Code with Exception)...原创 2018-12-03 17:34:14 · 267 阅读 · 0 评论 -
重构-改善既有的代码设计-简化函数调用(10-1)
10.1.函数改名(Rename Method)10.2.添加参数(Add Parameter)10.3.移除参数(Remove Parameter)10.4.将查询函数和修改函数分离10.5.令函数携带参数(Parameterize Method)10.6.以明确函数取代参数(Replace ...原创 2018-12-03 17:02:31 · 200 阅读 · 0 评论 -
重构-改善既有的代码设计-大型重构(12)
12.1梳理并分解继承体系(Tease Apart Inheritance) 12.2.将过程设计转化为对象设计(Convert Procedural Design to Objects)12.3.将领域和表述/显示分离(Separate Domain from Presentation)...原创 2018-12-08 19:48:40 · 184 阅读 · 0 评论 -
重构-改善既有的代码设计-处理概括关系(11-2)
11.6.提炼子类(Extract Subclass)type Employee struct { _rate int}func (e *Employee) getRate() int { return e._rate}type JobItem struct { _quantity int}func (j *JobItem) ge...原创 2018-12-08 17:24:00 · 250 阅读 · 0 评论 -
重构-改善既有的代码设计-简化条件表达式(9)
9.1.分解条件表达式(Decompose Conditional)9.2.合并条件表达式(Consolidate Conditional Expression)9.3.合成重复的条件片段(Consolidate Duplicate Conditional Fragments)9.4.移除控制标记(Remove Control Flag)...原创 2018-12-03 12:20:09 · 201 阅读 · 0 评论 -
重构-改善既有的代码设计-重新组织数据(8-2)
8.7.将单向关联改为双向关联(Change Unidirectional Association to Bidirectional) 8.8.将双向关联改为单向关联(Change Bidirectional Association to Unidirectional) 8.9.以字面常量取代魔法数(Replace Magic Num...原创 2018-11-30 18:20:51 · 212 阅读 · 0 评论 -
重构-改善既有的代码设计-重新组织数据(8-1)
8.1.自封装字段(Self Encapsulate Field)8.2.以对象取代数据值(Replace Data Value with Object)8.3.将值对象改为引用对象(Change Value to Reference)8.4.将引用对象改为值对象(Change Refere...原创 2018-11-30 15:13:41 · 273 阅读 · 0 评论 -
重构-改善既有的代码设计-在对象之间搬移特性(7)
在对象之间编译特性7.1搬移函数(Move Method)7.2搬移字段(Move Field)7.4.提炼类(Extract Class)7.4.将类内联化(Inline Class)7.5.隐藏“委托关系”(Hide Delegate)7.6.移除中间人(Re...原创 2018-11-30 10:56:27 · 205 阅读 · 0 评论 -
重构-改善既有的代码设计-重新组织函数(6-2)
6.6.分解临时变量(Split Temporary Variable)6.7.移除对参数的赋值(Remove Assignments to Parameter)6.8.以函数对象取代函数(Replace Method with Method Object)6.9.替换算法(Substitute Algorithm)...原创 2018-11-29 18:03:16 · 327 阅读 · 0 评论 -
重构-改善既有的代码设计-重新组织函数(6-1)
6.1.提炼函数(Extract Mothod)动机:长度不是问题,关键在于函数名称和函数本体之间的语义距离。如果提炼可以强化代码的清晰度,那就去做,就算函数名称比提炼出来的代码还长也无所谓。但如果你想不出一个更有意义的名字,就别动。6.2.内联函数(Inline Method)6.3.内联临时变量(Inline Temp)6.4.以查询取代临时变量(Rep...原创 2018-11-29 17:21:16 · 236 阅读 · 0 评论 -
重构-改善既有的代码设计-重构列表(5)
1.重构的记录格式,分为五个部分1.名称2.简短概要 三部分 1.一句话介绍这个重构能够帮助解决的问题,2.一段简短陈述,介绍你应该做的事,3.一副速写图,简单展现重构前后示例3.动机4.做法5.范例 2.寻找引用点:不要盲目查找替换,应该仔细检查每一个引用点,确定它的确指向你想要替换的东西。借助强类型编译器或者文本查找工具。3.这些重构手法有多成熟重构...原创 2018-11-29 16:23:35 · 189 阅读 · 0 评论 -
重构-改善代码的既有设计-构筑测试体系(4)
本篇主要突出构筑测试体系的重要性:1.自测试代码的价值:确保所有的测试都完全自动化,让它们自己检查自己的测试结果。一套测试就是一个强大的Bug侦测器,能够大大缩减查找Bug所需的时间。2.JUnit测试框架:本书采用的是Java的测试框架JUnit,由于在下使用的语言是C++和Golang所以就不再赘述了。C++的测试框架推荐使用Google Test框架。...原创 2018-11-29 15:25:31 · 353 阅读 · 0 评论 -
重构-改善代码的既有设计-代码的坏味道(3-2)
3.11.平行继承体系(Parallel Inheritance Hierarchies)3.12.冗赘类(Lazy Class)如果重构使得类的身价严重缩水,不再做那么多工作。或者,开发者事前规划了某些变化,并添加一个类来应付这些变化,但变化实际为发生。请删除这些类。如果某些子类没有足够的工作,试试 Collapse Hierarchy.对于几乎没用的组件,你应该以Inline ...原创 2018-11-29 14:44:51 · 420 阅读 · 0 评论 -
重构-改善代码的既有设计-代码的坏味道(3-1)
3.1.重复代码(Duplicated Code)Extract Method, Form Template Method,Substitute Algorithm,Extract Class.同一个类的两个函数含有相同的表达式,这时只需要从用Extract Method提炼出重复的代码,然后让这两个地点都调用被提炼出来的那一段代码。两个互为兄弟的子类内含有相同表达式。要避免这种情况,...原创 2018-11-29 11:29:50 · 207 阅读 · 0 评论 -
重构-改善既有的代码设计-总结
第十二章大型重构第十三章重构,复用和现实第十四章重构工具第十五章总结通过最后的四章 作者将为什么重构和重构工具重新阐述了一遍。但并没有实际的重构技巧,所以这里不再赘述。同时,作者强调看完这本书才只是打开了重构的大门,并不是就已经功德圆满了。同时作者让我们在一重构的节奏,重构的技巧就像是音乐中的音符,但是具体能谱写出什么样的旋律还是要看开发者个人自己,最后我的重构技巧暂时就准...原创 2018-12-09 17:15:15 · 229 阅读 · 0 评论