1,建立可靠地测试环境

2,寻找要重构的代码(函数或者类)

一般为比较长的函数,或者逻辑混乱的类

3,重构后的函数要修改局部变量,增加程序的可读行

4,函数应该放在它所使用的数据的所属对象内;

(函数搬迁)

5,尽量剔除临时变量

6,不要在另一个对象的属性基础上运用switch语句,如果不得不使用,页应该在对象自己的数据上使用,而不是别人的数据上使用

7,将子类型和父类型进行继承操作,来实现多态操作(Movie提取三个子类)

8,将相同类型的不同部分以最小单位提取成类(Movie的price 提取成三个子类)

9,提取抽象类(Price)

什么时候重构?

为什么重构?

重构后的好处?

1,重复代码

①两个函数中有两处使用同一表达式---提炼函数,让这两个函数同时调用提炼出来的函数

②两个兄弟类中有两处使用同一表达式----将函数提炼到超类中,子类调用超类函数

2,代码过长

原则:每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途命名。我们可以对一组甚至短短一行代码做这件事,只要函数名能够表达其用途,我们就应该毫不犹豫的这么做

① 避免使用临时变量,因为这样做对程序的可读性得不到任何提升

3,如何确定该提炼哪一段代码呢?

① 以个很好的技巧是:寻找注释。

他们通常能指出代码用途和实现手法之间的语义距离..

如果代码前方有一行注释,就是在提醒你:可以将这段代码替换成一个函数。

而且可以在注释的基础上给这个函数命名。就算只有一行代码页应该这么做

②条件表达式和循环页是提炼的信号

循环可以和其内的代码提炼成一个独立的函数,

条件表达式可以使用分解条件来提取函数

4,过大的类

①单个类干的事情太多将带来灭亡。

转载于:https://www.cnblogs.com/anbylau2130/p/3359799.html

重构-改善既有代码的设计(1)相关推荐

  1. 重构—改善既有代码的设计

    概述 1.1 参考资料 <重构-改善既有代码的设计>读后总结 <重构改善既有代码的设计> 22种代码的坏味道,一句话概括 1.2 何谓重构 首先要说明的是:视上下文不同,重构的 ...

  2. PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性

    思维导图 索引: Ø Move Method(搬移函数) Ø Move Field (搬移值域) Ø Extract Class (提炼类) Ø Inline Class (将类内联化,就是把当前的类 ...

  3. 『重构--改善既有代码的设计』读书笔记----序

    作为C++的程序员,我从大学就开始不间断的看书,看到如今上班,也始终坚持每天多多少少阅读技术文章,书看的很多,但很难有一本书,能让我去反复的翻阅.但唯独『重构--改善既有代码的设计』这本书让我重复看了 ...

  4. PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据

    介绍 承接上文的PHP 杂谈<重构-改善既有代码的设计>之 重新组织你的函数继续重构方面的内容. 这章主要针对数据的重构. 1.争论的声音--直接访问Field还是通过函数(Accesso ...

  5. 重构 改善既有代码的设计:代码的坏

    以下内容来自<<重构 改善既有代码的设计>> 一.什么是重构 所谓重构(Refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改以改进程序的内部结构 ...

  6. 《重构-改善既有代码的设计》-第1例:租赁影片(2)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 上接  重构-改善既有代码的设计-第1例:租赁影片(1) 2  运用多态取代与价格相关的条件逻辑 2 ...

  7. 《重构-改善既有代码的设计》-第1例:租赁影片(1)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 买了<重构 - 改善既有代码的设计 >一书,一直没有好好看,大致过了下也觉得只是有点点印 ...

  8. 实践提高《重构改善既有代码的设计第2版》PDF中文+PDF英文+对比分析

    重构是编程的基础,是在不改变外部行为的前提下,有条不紊地改善代码.编程爱好者都知道,Martin Fowler 的<重构:改善既有代码的设计>已经成为全球有经验的程序员手中的利器,既可用来 ...

  9. 重构改善既有代码的设计(github源码)

    refactoring improving the design of existing code(重构改善既有代码的设计) https://github.com/CoderDream/refacto ...

  10. 重构:改善既有代码的设计(软件开发的不朽经典)

    重构:改善既有代码的设计(软件开发的不朽经典) 基本信息 作者: (美)Martin Fowler   译者: 熊节[同译者作品] 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:978 ...

最新文章

  1. LAMP+Postfix+Dovecot+Postfixadmin搭建邮件管理系统(四)
  2. Linux下SYN***原理与防范措施
  3. CRLF line terminators导致shell脚本报错:command not found
  4. python程序设计试卷_2013Python程序设计期末试卷A
  5. Nginx配置以及域名转发
  6. 从门外汉到 Go 圈网红技术博主的五年历程
  7. MyBatis多参数传递之混合方式——MyBatis学习笔记之十五
  8. Cocos2d-x动作CCAction
  9. 微信公众号全局返回码
  10. Python3.4中文手册chm,3.7中文手册HTML
  11. 平衡二叉树的插入与删除
  12. 图像滤镜艺术---乐高像素拼图特效
  13. 有关凸集的证明例题_凸集/凸函数习题
  14. html超链接的锚点链接的使用
  15. 【离散】如何利用顶点数求树叶或知树叶求顶点
  16. #6.4四维理论的预测环节
  17. C#实现SQL数据库备份与恢复
  18. 0035-量化第六天:QMT—板块收益排序后选取收益最高成分股
  19. 前端程序员常用的9大构建工具
  20. Matlab替换wrfinput数据,WRF模式之个例模拟

热门文章

  1. FIR基本型仿真_03
  2. 信用卡多还钱了怎么办?
  3. 使用有限状态机(FSM)解释shell 命令
  4. layui中table监听单元格_layui table表格 监听头删除不请求后台
  5. 轮换html有虚宽出现,乒乓球理论考试复习资料
  6. 时间设置偏移秒_零偏移有源低通滤波器,第2部分
  7. python中怎么调用函数_浅谈Python中函数的定义及其调用方法
  8. UVA572 Oil Deposits DFS求解
  9. MS17-010漏洞复现
  10. channels2.X 学习笔记