摘要:
返回总目录 本小节目录 Extract Class(提炼类) Inline Class(将类内联化) 3Extract Class(提炼类) 概要 某个类做了应该由两个类做的事。 建立一个新类,将相关的字段和函数从旧类搬移到新类。 动机 如果一个类中有大量的函数和数据,这个类往往太大而且不易理解。这 阅读全文
摘要:
返回总目录 本小节目录 Move Method(搬移函数) Move Field(搬移字段) 1Move Method(搬移函数) 概要 你的程序中,有个函数与其所驻类之外的另一个类进行更多交流:调用后者,或被或者调用。 在该函数最常引用的类中建立一个有着类似行为的新函数。将旧函数变成一个单纯的委托 阅读全文
摘要:
返回总目录 本小节目录 Replace Method with Method Object(以函数对象取代函数) Substitute Algorithm(替换算法) 阶段性小结 Substitute Algorithm(替换算法) 8 Replace Method with Method Obje 阅读全文
摘要:
返回总目录 本小节目录 Split Temporary Variable(分解临时变量) Remove Assignments to Parameters(移除对参数的赋值) Remove Assignments to Parameters(移除对参数的赋值) 6 Split Temporary V 阅读全文
摘要:
返回总目录 5 Introduce Explaining Variable(引用解释性变量) 概要 你有一个复杂的表达式。 将该复杂表达式(或其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。 动机 有时候你会遇到一系列复杂的表达式连续运算的时候,这个时候你可能根本招架不住如此长或者 阅读全文
摘要:
返回总目录 4 Replace Temp with Query(以查询取代临时变量) 概要 你的程序以一个临时变量保存某一表达式的运算结果。 将这个表达式提炼到一个独立函数中。将这个临时变量的所有引用点替换为对函数的调用。此后,新函数就可以被其他函数使用。 动机 临时变量的问题在于:只在当前函数可见 阅读全文
摘要:
返回总目录 本小节目录: 1、Extract Method(提炼函数) 2、Inline Method(内联函数) 3、Inline Temp(内联临时变量) 1 Extract Method(提炼函数) 概要 你有一段代码可以被组织在一起并独立起来。 将这段代码放进一个独立函数中,并让函数名称解释 阅读全文
摘要:
返回总目录 十四、Temporary Field(令人迷惑的暂时字段) 1、某个实例变量仅为某种特定的情况而设 2、某些实例字段仅为某个函数的复杂算法少传参数而设 将这些变量和相关函数提炼到一个独立的类中。 十五、Message Chains(过度耦合的消息链) 如果你看到用户向一个对象请求另一个对 阅读全文
摘要:
返回总目录 九、Primitive Obsession(基本类型偏执) 这主要表现在过多的使用基本类型。 1、总是被放在一起的基本类型字段,可以提炼一个类出来。 2、参数列中有基本类型数据,这个和第八个“坏味道”一样,可以将参数提炼成对象。 3、如果你正在从数组中挑选数据,那么将数组替换成对象。 十 阅读全文
摘要:
返回总目录 四、Long Parameter List(过长参数列) 太长的参数列难以理解,太多参数会造成前后不一致、不易使用。 1、一般情况来说,如果参数多于3个,就可以考虑使用对象了。将函数所需要的参数封装在一个新类中,将这个类当做参数。 2、如果方法的参数数目不定,且参数类型一致,也可以使用p 阅读全文