重构
huanshirenjian
这个作者很懒,什么都没留下…
展开
-
重构-改善既有的代码设计(一)
重构原则1. 重构的定义名词形式的定义: 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 动词形式的定义: 使用一系列重构手法,在不改变软件可观察行为的前提下,调整期结构。2. 代码的坏味道2.1 Duplicated Code(重复代码)如果在一个以上的地点看到相同的程序结构,那么可以肯定,设法将他们合二为一,程序会变得更好。2转载 2016-09-27 11:50:14 · 432 阅读 · 0 评论 -
重构-改善既有的代码设计(二)
1. 重构的记录格式每个重构手法都有以下五个部分: - 首先是名称name。建造一个重构词汇表,名称很重要。 - 名称之后是一个简短概要summary。简单介绍此以重构手法的适用情景,以及它所做的事情。 - 动机motivation。为你介绍为什么需要这个重构和什么情况下不该使用这个重构。 - 做法mechanics。简明扼要地一步步介绍如何进行此以重构。 - 范例examples。以一个转载 2016-09-27 17:17:55 · 386 阅读 · 0 评论 -
重构-改善既有的代码设计(三)
1. 在对象之间搬移特性1.1 Move Method(搬移函数)你的程序中,有个函数与其所驻类之外的另一个类进行更多交流,调用后者或者被后者调用。在该函数最常用的类中建立一个有着类似行为的新函数。将旧函数变成一个单纯的委托函数,或者将旧函数完全移除。 动机 如果一个类中有太多行为,或者如果一个类与另一个类有太多合作而形成高度耦合,就应该搬移函数。 做法 - 检查源类中被源函数所使用的一切特转载 2016-09-27 20:28:23 · 336 阅读 · 0 评论 -
重构-改善既有的代码设计(五)
1. 简化条件表达式1.1 Decompose Conditional(分解条件表达式)你有一个复杂的条件(if-then-else)语句。从if、then、else三个段落中分别提炼出独立函数。 动机 复杂的条件逻辑使得代码的可读性大大降低。 做法 - 将if段落提炼出来,构成一个独立函数。 - 将then段落和else段落都提炼出来,各自构成一个独立函数。 范例:略。1.2 Cons转载 2016-09-28 17:58:24 · 346 阅读 · 0 评论 -
重构-改善既有的代码设计(四)
1. 处理数据的重构手法1.1 Self Encapsulate Field(自封装字段)你直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙,为这个字段建立取值/设值函数,并且只以这些函数来访问字段。 动机 此种方式一般看个人意愿和实际情况,建议使用自封装,因为比较灵活。 做法 - 为待封装字段建立取值/设值函数。 - 找出该字段的所有引用点,将它们全部改为调用取值/设值函数。 -转载 2016-09-28 16:42:24 · 363 阅读 · 0 评论 -
重构-改善既有的代码设计(六)
1. 简化函数调用1.1 Rename Method(函数改名)函数的名称未能揭示函数的用途,修改函数名。 动机 函数的名称不能反映它的用途。 做法 - 检查函数签名是否被超类或子类实现过。如果是,则需要针对每份实现分别进行下列步骤。 - 声明一个新函数,将它命名为你想要的新名称。将旧函数的代码复制到新函数中,并进行适当调整。 - 编译。 - 修改旧函数,令它将调用转发给新函数。 -转载 2016-09-29 11:17:43 · 254 阅读 · 0 评论 -
重构-改善既有的代码设计(七)
1. 类继承关系的重构1.1 Pull Up Field(字段上移)两个子类拥有相同的字段。将该字段移至超类。 动机 子类重复重复的字段、特性。 做法 - 针对待提升之字段,检查它们的所有被使用点,确认它们以同样的方式被使用。 - 如果这些字段的名称不同,先将它们改名,使每一个名称都和你想为超类字段取得名称相同。 - 编译,测试。 - 在超类中新建一个字段。 - 移除子类中的字段。转载 2016-09-29 14:55:47 · 261 阅读 · 0 评论