重构摘要12_大型重构

《重构-改善既有代码的设计》Martin Fowler 摘要:   第十二章
大型重构

特点

依据须要安排自己的工作,仅仅在须要加入新功能或修补错误时才进行重构。

进行大规模重构时,有必要为整个开发团队建立共识。意识到:重构正在进行,每一个人都应该对应地安排自己的行动。

Tease Apart Inheritance 梳理并分解继承体系

某个继承体系同一时候承担两项责任

建立两个继承体系,并通过托付关系让当中一个能够调用还有一个。

假设继承体系中的某一特定层级上的全部类,其子类名称都以同样的形容词開始,那么这个体系非常可能就承担着两项不同的责任。

ConvertProcedural Design to Objects 将过程化设计转化为对象设计

手上有些传统过程化风格的代码

将数据记录变成对象,将大块的行为分成小块,并将行为移入相关对象之中。

Separate Domain from Presentation 将领域和表述/显示分离

某些GUI类之中包括了领域逻辑

将领域逻辑分离出来,为它们建立独立的领域类。

Extract Hierarchy 提炼继承体系

你有某个类做了太多工作,当中一部分工作是以大量条件表达式完毕

建立继承体系,以一个子类表示一种特殊情况。

以上重构都包括前面章节提到的一系列或一组重构手法。

时间: 2024-10-30 08:52:56

重构摘要12_大型重构的相关文章

【重构学习】11 大型重构

好了,前面所有的都是很简单的例子,现在开始的是大型重构. 对于大型重构来说,情况复杂多变,耗时也会很长,前面的简单重构大多是在一个小时内可以完成,但是对于大型重构来说可能需要几个月,甚至数年.如果是一个运行中的系统,重构起来只能每天一点点去慢慢重构. (恕我直言,在国内恐怕这样的公司也很少.所以我们要自己养成随时重构的习惯,不要挖坑给自己埋最好.没谁能给你这么长时间重构,特别当你是个低端程序员的时候.你得相信,你所有偷懒的举动,都会给你以后的工作带来麻烦.除非你明天走人了,那么你的锅可能就给我背

重构摘要9_简化条件表达式

<重构-改善既有代码的设计>Martin Fowler 摘要: 第九章 简化条件表达式 Decompose Conditinal 分解条件表达式 你有一个复杂的条件(if-then-else)语句 从三个段落中分别提炼出独立函数 Consolidate Conditional Expression 合并条件表达式 你有一系列条件测试,都得到相同结果 将这些测试合并成为一个条件表达式,并将这个条件表达式提炼成为一个独立函数 检查用意更清晰,有时也不用这么做 Consolidate Duplica

重构摘要3_代码的坏味道

如果尿布臭了,就换掉它. 1.Duplicated Code 重复代码 Extract Method Pull Up Method Form Template Method --> Template Method 模式 Substitute Algorithm --> 函数算法替代 2.Long Method 过长的函数 "间接层"所带来的全部利益--解释能力.共享能力.选择能力--都是有小函数支持的. 真正关键在于一个好名字. 每当感觉需要以注释来说明点什么的时候,我们就

重构摘要6_重新组织函数

Extract Method 提炼函数 过长的函数或者一段需要注释才能理解的代码,就将这段代码放进一个独立的函数中. 函数粒度小,复用机会变大,覆写容易. 高层函数如一系列注释 关键看函数名称和函数本体之间的语义距离. 变清晰,做什么来命名 Inline Method 内联函数 有时可内联到一个大函数后,再从中提炼出组织合理的小型函数. Inline Temp 内联临时变量 return (order.basePrice>0); //可定义final确定是否被赋值一次 Replace Temp

重构摘要2_重构原则

何谓重构 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提交其可理解性,降低其修改成本. 重构的目的是软件更容易理解和修改: 重构不会改变软件可观察的行为. 两顶帽子比喻 添加新功能 不修改既有代码,只管添加新功能,并通过测试 重构 不添加功能,只管改进程序结构 为何重构 重构改进软件设计 改进的重要方向就是消除重复代码. 重构使软件更容易理解 准确说出我所要的 利用重构来协助我理解不熟悉的代码 随着代码渐趋简洁,发现可以看到一些以前看不到的设计层面的东西. 重构帮助找到BUG

重构摘要7_在对象之间搬移特性

<重构-改善既有代码的设计>Martin Fowler 摘要: 第七章 在对象之间搬移特性 Move Method 搬移函数 你的程序中,有个函数与其所驻类之外的另一个类进行更多交流:调用后者,或被后者调用 在该函数最常引用的类中建立一个有着类似行为的新函数.将旧函数变成一个单纯的委托函数,或者将旧函数完全移除. Move Field 搬移字段 某个字段被其所驻类之外的另一个类更多地用到. 如果我需要对类做许多处理,保持小步前进是有帮助的. Extract Class 提炼类 某个类做了应该由

重构摘要8_重新组织数据

ASP.NET MVC路由(一) 前言 从这一章开始,我们即将进入MVC的世界,在学习MVC的过程中在网上搜索了一下,资料还是蛮多的,只不过对于我这样的初学者来看还是有点难度,自己就想看到有一篇引导性的资料可以帮助我初步的了解一下这部分知识,然后再去学习大神们写的资料.并不是说看完文章就会可以开发.可以怎么怎么样,没有!这些都没有,只是让你在脑海中把这部分内容记住它们的模型图以及一个大概的在MVC框架中的位置或者是整个系统中的位置,说了这么多的目的就是让大家更好的了解基础知识,有了它以后的进阶会

重构摘要1

重构概览 所谓重构(refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构. 摘要 如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目录,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性. 代码块愈小,代码的功能就愈容易管理,代码的处理和移动也就愈轻松. Extract Method 提炼到独立方法中 重构技术就是以微小的步伐修改程序,如果你放下错误,很容易可发现它. 任何一个傻瓜都能写出计算机可以理解的代码,唯

重构摘要4_构筑测试体系

确保所有测试都完全自动化,让它们检查自己的测试结果. 通常使用Junit测试框架 准备好测试夹具,setUp() 创建 tearDown() 删除 Tip 现在使用注解@Before @After @BeforeClass @AfterClass 频繁地运行测试.每次编译请把测试也考虑进去--每天至少执行每个测试一次. 编写测试代码时,往往一开始让它们失败,为了确保测试机制的确可行. 每当你收到bug报告,请先写一个单元测试来暴露bug. 测试你担心出错的部分. 考虑可能出错的边界条件,把测试火