
重构
zjliu1984
这个作者很懒,什么都没留下…
展开
-
重构系列5.重新组织数据
1.以对象取代字段某些开始时简单的字段变得不再简单,需要更多额外的功能,可以考虑以对象代替该字段(一个或多个字段)。 2.以对象取代数组如果你有一个数组,其中不同的元素代表不同的东西,则可以用一个对象代替数组。 3.以符号常量取代魔数 4.封装集合(collection)有个函数返回一个集合对象,可以考虑让这个函数返回该集合对象的一个只读视图,以免无意中修改集合原创 2009-06-15 21:23:00 · 457 阅读 · 0 评论 -
重构系列8.处理继承关系
1.字段上移两个子类中拥有相同的字段,可以把该字段上移到父类中。 2.函数上移两个子类中有相同的函数,可以把该函数上移到父类中。 3.构造函数本体上移你在各个子类中拥有一些构造函数,他们的本体代码几乎完全一致,可以把构造函数本体上移到父类中。 4.字段和函数下移某个字段或者函数只是某个子类特有的而不是公共的特性,可以把该字段或者函数下移到需要它的子类中。原创 2009-06-15 21:51:00 · 600 阅读 · 0 评论 -
重构系列1.重构原则
重构:使用一系列重构手法,调整软件内部结构,目的在不改变软件外部可察行为的前提下,提高其可理解性,降低其修改成本。 两顶帽子:添加新功能和重构,添加新功能时不修改既有代码,只管添加新功能,并让其通过测试,添完后对代码进行调整使其更易于理解,如果发现添加新功能比较困难,则可以先对代码进行重构使添加新功能比较容易进行。 为什么进行重构:重构对代码进行整理,让所有的东西回到应有的位置,使原创 2009-06-14 22:32:00 · 618 阅读 · 0 评论 -
重构系列2.代码的坏味道
1.重复的代码(重复的代码修改时需要修改多处,容易出现不一致)如果一个类内有多个函数有重复的代码,可以提取出来放到一个新函数中,然后让用到这些代码的函数调用新函数;如果互为兄弟的两个子类中含有重复代码,则可以提取出来放到父类中;如果其功能骨架相同,可用模版方法模式;如果毫不相干的两个类中有重复代码,可提取出来放到一个单独的类中,然后通过复合调用新类。 2.过长函数(难以理解)函数过原创 2009-06-14 22:47:00 · 599 阅读 · 0 评论 -
重构系列3.重新组织函数
1.提取函数把一段相关的代码独立出来放入一个单独的函数,并让函数名称解释函数用途。 2.内联函数一个函数中的代码和该函数名称同样清晰,直接在函数调用处插入函数本体,移除该函数。 3.用函数替换临时变量你的程序以一个临时变量保存某一表达式的结果,该结果可能在其他地方用到,可以用一个查询函数替换该临时变量。 4.引入解释变量你有一个复杂的表达式,该表达式难以理解原创 2009-06-15 21:04:00 · 481 阅读 · 0 评论 -
重构系列4.在对象之间搬移特性
1.搬移函数-----函数驻留地不合适某个类中的函数对另一个类更感兴趣,把该函数搬移到另一个类中。 2.提取类-----类的职责过多某个类做了应该由两个类做的事情,应该遵循类的单一职责原则,提取出一个新类。 3.引入外加函数你需要某个类有个额外的方法,但你又不能修改类的代码,可考虑使用装饰模式添加需要的功能。原创 2009-06-15 21:18:00 · 474 阅读 · 0 评论 -
重构系列6.简化条件表达式
1.分解条件式你有一个复杂的条件语句,可以考虑用函数代替条件逻辑。 2.合并条件式你有一系列的条件测试,他们都要执行相同的操作,可以将这些条件式合并到一个函数中。 3.合并复杂的条件片段在条件式的每个分支上有一段相同的代码,将这段代码搬移到条件式之外。 4.用return语句取代嵌套条件式函数中的条件逻辑使人难以看清正常的执行路径,可以考虑在条件判断后面使用原创 2009-06-15 21:32:00 · 568 阅读 · 0 评论 -
重构系列7.简化函数调用
1.重新命名函数函数的名称未能揭示函数的用途,修改函数名称,让名称解释函数用途,即函数用来干什么。 2.引入参数对象某些参数总是同时出现,以一个对象取代这些参数。 3.移除设值函数你的类中的某个字段一旦被初始化后就不再改变,可以移除该字段的设值函数,只在构造函数中对其初始化一次。 4.以工厂函数取代构造函数你希望在创建对象时不仅仅是对它做简单的构建动作,可以原创 2009-06-15 21:40:00 · 488 阅读 · 0 评论