摘要:我们希望在系统或者软件需要修改或者增加新功能时,只需要定位到系统的某一点,更改的地方单一,而不出现多处修改。因为更改的地方越多,容易出的问题越多,则代码的坏味道也越严重。我们应该寻找因某特定原因而造成的所有变化,然后运用Extract Class(提炼类)将它们提炼到另一个类中。
阅读全文
随笔分类 - [11] 重构专题
摘要:向已有对象发送一条请求就可以获取原本位于参数列的一份数据时,运用Replace Parameter with Method(以函数取代参数)重构准则。运用Preserve Whole Object(保存对象完整)收集来自同一对象的一堆数据,并以该对象替换它们。对于缺乏合理对象归属的数据,可使用Introduce Parameter Object(引入参数对象)为它们制造一个参数对象。例外:如果明显...
阅读全文
摘要:选择class内彼此相关的变量,运用Extract Class(提炼类)将它们一起提炼到新的class内。如果它适合作为一个子类,则使用Extract Subclass(提炼子类)比较适合。确定客户端如何使用代码,运用Extract Interface(提炼接口)为每一种使用方式提炼一个接口。将GUI类的数据和行为移至独立的领域对象,对于两边同时保留的重复数据,运用Duplicate Observ...
阅读全文
摘要:99%的情况下,要把函数变小,只需要使用ExtractMethod(提炼函数)新函数。函数有大量参数或临时变量。 尝试使用Extract Method(提炼函数),将会把大量参数或临时变量当作参数传递到新函数中。不可取!运用Replace Temp with Query(以查询取代临时变量)来消除临时变量。运用Introduce Parameter Object(引入参数对象)和PreserveW...
阅读全文
摘要:同一类中的不同函数具有相同表达式,直接采用ExtractMethod(提炼函数)提炼重复的代码。两个互为兄弟的子类含有相同的表达式。 首先采用ExtractMethod(提炼函数)提炼重复的代码。然后再对提炼的代码使用Pull Up Method(方法上移),将它移入父类。两个互为兄弟的子类代码类似,并非完全相同。 首先采用ExtractMethod(提炼函数)区分相同部分和差异部分代码,构成单独...
阅读全文
摘要:这段时间在看《重构-改善既有代码的设计》这本书,书写得不错。主要是以手册的方式展现给我们,但是阅读的时候总是查找各种重构方法比较费力。所以在此博客中做整理。本文整理重构之代码的坏味道目录如下:Duplicated Code(重复代码)Long Method(过长函数)Large Class(过大类)Long Parameter List(过长参数列)Divergent Change(放散式变化)S...
阅读全文