重构——改善既有代码的设计_第1页
重构——改善既有代码的设计_第2页
重构——改善既有代码的设计_第3页
重构——改善既有代码的设计_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、重新组织函数1. Extract Method(提炼函数)Where :有一段代码可以被组织在一起并独立出来。How :将一段代码放进一个独立函数中,并让函数名称解释该函数的用途。2. Inline Method(内联函数)Where : 一个函数的本体与名称同样清楚易懂。How :在函数调用点插入函数本体,然后移除该函数。3. Inline Temp(内联临时变量)Where :你有一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构手法。How :将所有对该变量的引用动作,替换为对它赋值的那个表达式自身。4. Replace Temp with Query(以查询取代临时变量

2、)Where :你的程序以一个临时变量保存某一表达式的运算结果。How :将这个表达式提炼到一个独立函数中。将这个临时变量的所有引用点替换成对新函数的调用。此后,新函数就可被其他函数使用。5. Introduce Explaining Variable(引入解释性变量)Where :你有一个复杂的表达式。How :将该负责表达式(或其中一部分)的结果放进一个临时变量,以此变量名来解释表达式用途。6. Split Temporary Variable(分解临时变量)Where :你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计 算结果。How :针对每次赋值,创造一个独立

3、、对立的临时变量。7. Remove Assignments to Parameters(移除对参数的赋值 )Where :代码对一个参数进行赋值。How :以一个临时变量取代该参数的位置。8. Replace Method with Method Object( 以函数对象取代函数)Where :你有一个大型函数,其中局部变量的使用使你无法采用Extra Method(提炼函数)How :将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的字段。然后你可以在同一个对象中将这个大型函数分解为多个小型函数。9. Substitute Algorithm (替换算法)Where :你想要把

4、某个算法替换为另一个更清晰的算法。How :将函数本体替换为另一个算法。二、在对象之间搬移特性10. M ove Method (搬移函数)Where :你的程序中,有个函数与其所驻类之外的另一个类进行更多交流:调用后者,或被 后者调用。How :在该函数最常引用的类中建立一个有着类似行为的新函数。将旧函数变成一个单次的委托函数,或是将旧函数完全移除。11. Move Field(搬移字段)Where :你的程序中,某个字段被其所驻类之外的另一个类更多地用到。How :在目标类新建一个字段,修改源字段的所有用户,令它们改用新字段。12. Extract Class (提炼类)Where :某个类做了应该由两个类做的事。How :建立一个新类,将相关的字段和函数从旧类搬移到新类。13.Inline Class (将类内联化)Where :某个类没有做太多事情。How :将这个类的所有特性搬移到另一个类中,任何移除原类。14. Hide Delegate (隐藏“委托关系”)Where :客户通过一个委托关系类来调用另一个对象。How :在服务类上建立客户所需的所有函数,用以隐藏委托关系。15. Remove Middle Man (移除中间人)Where :某个类做了过多的简单委托动作。How :让客户直接调用受托类。16.Introduce Foreign Method

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论