随笔分类 - 重构
摘要:一、改善代码的三部曲 《设计模式》-> 《重构》-> 《重构与模式》。也就是设计->重构->重构出新设计。 《设计模式》主要详细说明20几种模式,为我们带来了常见设计问题的经典解决方案,从而改变了整个面向对象开发的面貌。为设计而著。 《重构》改善既有代码的设计,总结了我们会用到的各种重构手法,为我...
阅读全文
摘要:《重构》为我们带来了一种改进代码的高效过程,从而彻底改变了面向对象设计的方式: 1)改进软件设计(整理代码) 2)提高代码质量和可读性,使软件系统更易理解和维护 3)帮助尽早的发现错误 4)提高编程速度 改善设计、提高可读性、减少缺陷都是为了稳住阵脚。良好的设计是成功的一半,停下来通过...
阅读全文
摘要:大型重构1. Tease apart Inheritance 梳理并分解继承体系某个继承体系同时承担两项责任 ,建立两个继承体系,并通过委托关系让其中一个可以调用另一个 .2.Convert Procedural design to Objects 将过程化设计转化为对象设计你手上有一些传统过程佛冈...
阅读全文
摘要:简化函数调用1.Pull Up Field 字段上移两个子类拥有相同的字段。将该字段移至超类。如果各子类是分别开发的,或者是在重构过程中组合起来的,你常会发现它们拥有重复特性,特别是字段更容易重复。这样的字段有时拥有相似的名字,但也并非绝对如此。判断若干字段是否重复,唯一的办法就是观察函数如何使用它...
阅读全文
摘要:简化函数调用1.Rename Method 函数改名函数的名称未能揭示函数的用途。修改函数名称。大力提倡的一种编程风格是:将复杂的处理分解成小函数。但是,如果做得不好,这会使你费尽周折却弄不清楚这些小函数各自的用途。要避免这种麻烦,关键就在于给函数起一个好名称。函数的名称应该准确表达它的用途。给函数...
阅读全文
摘要:简化条件表达式1.Decompose Conditional 分解条件表达式你有一个复杂的条件语句。从if、then、else三个段落中分别提炼出独立函数。程序之中,复杂的条件逻辑是最常导致复杂度上升的地点之一。你必须编写代码来检查不同的条件分支、根据不同的分支做不同的事,然后,你很快就会得到一个相...
阅读全文
摘要:重新组织数据:1.Self Encapsulate Field 自封装字段间接访问类的属性:你直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙。为这个字段建立取值/设值函数,并且只以这些函数来访问字段。 间接访问变量的好处是,子类可以通过覆写一个函数而改变获取数据的途径;它还支持更灵活的数据...
阅读全文
摘要:在面向对象编程过程中,明确该对象的职责。类应该是:做自己该做的事,应尽该尽的义务,1.Move Method 移动函数类的行为做到单一职责不要越俎代庖:你的程序中,有个函数与其所驻类之外的另一个类进行更多的交流:调用后者,或被后者调用。在该函数最常用引用的类中建立一个有着类似行为的新函数。将旧...
阅读全文
摘要:函数过长或者逻辑太混乱,重新组织和整理函数的代码,使之更合理进行封装。1.Extract Method 提炼函数提炼函数:(由复杂的函数提炼出独立的函数或者说大函数分解成由小函数组成)你有一段代码可以被组织在一起并独立出来。将这段代码放进一个独立函数,并让函数名称解释该函数的用途。void ...
阅读全文
摘要:1 Duplicated Code重复代码 不同的地方出现相同的程序结构: 如果你在一个以上的地点看到相同的程序结构,那么可以肯定:设法将它们和而为一,程序会变得更好。最常见的“重复代码”就是一个类内的两个函数含有相同的表达式。另一种常见情况就是两个互为兄弟的子类内含有相同的表达式。 1...
阅读全文
摘要:1.什么是重构重构(Refactoring):在不改变软件的功能和外部可见性的情况下,为了改善软件的结构,提高清晰性、可扩展性和可重用性而对软件进行的改造,对代码内部的结构进行优化。2.为何重构 1)改进软件设计(整理代码)重构和设计是相辅相成的,它和设计彼此互补。有了重构,你仍然必须做预先的设计,...
阅读全文