11 2017 档案
摘要:返回总目录 本小节目录 Rename Method(函数改名) Add Parameter(添加参数) Remove Parameter(移除参数) 1Rename Method(函数改名) 概要 函数的名称未能揭示函数的用途。 修改函数的名称。 动机 将复杂的处理过程分解成小函数是良好的编程风格。
阅读全文
摘要:返回总目录 7 Introduce Null Object(引入Null对象) 概要 你需要再三检查某对象是否为null。 将null值替换为null对象。 动机 系统在使用对象的相关功能时,总要检查对象是否为null,如果不为null,我们才会调用它的相关方法,完成某种逻辑。这样的检查在一个系统中
阅读全文
摘要:返回总目录 本小节目录 Replace Nested Conditional with Guard Claues(以卫语句取代嵌套条件表达式) Replace Conditional with Polymorphism(以多态取代条件表达式) 5Replace Nested Conditional
阅读全文
摘要:返回总目录 本小节目录 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) Remove Control Flag(移除控制标记) 3Consolidate Duplicate Conditional Fragments(合并重复的条件片段)
阅读全文
摘要:返回总目录 本小节目录 Decompose Conditional(分解条件表达式) Consolidate Conditional Expression(合并条件表达式) 1Decompose Conditional(分解条件表达式) 概要 你有一个复杂的条件(if-else if-else)语句
阅读全文
摘要:返回总目录 本小节目录 Introduce Foreign Method(引入外加函数) Introduce Local Extension(引入本地扩展) Introduce Foreign Method(引入外加函数) Introduce Local Extension(引入本地扩展) 7Int
阅读全文
摘要:返回总目录 本小节目录 Hide Delegate(隐藏“委托关系”) Remove Middle Man(移除中间人) Hide Delegate(隐藏“委托关系”) Remove Middle Man(移除中间人) 5Hide Delegate(隐藏“委托关系”) 概要 客户通过一个委托关系来调
阅读全文
摘要:返回总目录 本小节目录 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
阅读全文
摘要:返回总目录 一、Duplicated Code(重复代码) 我们写代码的时候应该遵循DRY原则:Don't Repeat Yourself。如果你在一个以上的地点看到相同的程序结构,那么可以肯定:设法将他们合而为一,程序会变得更好。 1、同一个类的两个函数含有相同的表达式 这时候你要做的就是将重复的
阅读全文
摘要:一般在介绍一样新技术之前,我们都要大致讲讲它的历史、主要原理等等。当然,这些东西很枯燥,很容易诱发我们的瞌睡虫。但是不说,又不能让人理解。好在不是太多。 如果您已经了解重构的定义、原理以及如何重构,那么请跳过本小节。好了,书归正传。 返回总目录 一、何谓重构(What) 视上下文的不同,重构有两种定
阅读全文
摘要:【重构:改善既有代码的设计】读书笔记总目录 重构原则 代码的坏味道【1】 代码的坏味道【2】 代码的坏味道【3】 代码的坏味道【4】 重构手法之重新组织函数【1】 重构手法之重新组织函数【2】 重构手法之重新组织函数【3】 重构手法之重新组织函数【4】 重构手法之重新组织函数【5】 重构手法之重新组
阅读全文
摘要:一、值参数 未用ref或out修饰符声明的参数为值参数。 使用值参数,通过将实参的值复制到形参的方式,把数据传递到方法。方法被调用时,系统做如下操作。 在栈中为形参分配空间。 复制实参到形参。 值参数的实参不一定是变量。它可以是任何能计算成相应数据类型的表达式。 看一个例子: 下面来调用方法 在把变
阅读全文


浙公网安备 33010602011771号