在开发过程中,总是对代码进行反复加工,随着客户新需求的出现,代码修改起来也越来越难,很多时候,我们没有时间去对现有项目代码进行整理,只有眼睁睁地看着系统设计逐渐腐败变质,再加上人员的流失情况,往往一个新手在没有完全理解系统整体设计之前,就贸然修改代码,从而使程序逐渐失去自己的结构,而我们也越来越难以通过阅读代码来理解系统原本设计。

在这种情况下,对现有代码进行重构(Refactoring)就显得尤其重要,重构的定义:

重构(Refactoring)

名词:对软件内容结构的一种调整,目的是在不改变软件之可察行为的前提下,提高其可理解性,降低其修改成本。

动词:使用一系列重构准则(手法),在不改变软件之可察行为前提下,调整其结构。

我们需要注意两点:第一,重构的目的是使得软件更加容易理解和修改,第二,重构不会改变软件可受观察之行为(即运行结果),重构之后软件功能应该和之前一样,如果连用户都知道你修改了软件,那你的重构肯定是失败的。

重构改进软件设计

 

我们拿最简单的情况来进行说明,同样的程序,设计不良的程序往往需要更多代码,这常常是因为代码在不同的地方使用完全相同的语句做同样的事。这是初学者最常见的一个问题即重复代码(Duplicate Code),我们可以通过对既有代码进行重构来消除重复代码进而改进设计。代码数量减少并不会使系统运行更快,因为这对程序的运行轨迹几乎没有任何明显影响。然而代码数量减少将使未来可能的程序修改动作容易得多。代码越多,理解起来越难,正确修改越不容易,修改一个问题有时甚至需要修改系统的的很多地方,还经常会有遗漏。消除重复代码,确定代码将所有事物和行为都只表述一次,惟一一次,这正是优秀设计的根本。

重构使软件更易被理解

程序有两类读者,一类是计算机,我们通过编写代码来告诉计算机来做什么事,它会精确地按照代码的指示执行。另一类读者是其他程序员,有很大可能会有其他开发人员通过阅读你的代码来理解系统或修改系统的一些功能。而我们常常在客户、老板、经理等相关人员施加的压力下,努力让程序运转,根本不会想到未来出现的那个开发者,但他往往才是最重要的。假如一个程序员花费了一周时间来修改某段代码,而如果他理解你的代码,可能只需要一个小时,这之间的差别显而易见。

刚阅读一个从未接触过的项目的时候,我个人非常喜欢对现有代码进行修改,通过重构来帮助我理解系统功能。我相信通过真正动手修改代码,可以加强对代码的理解,然后重新执行,看它是否仍然正常运行,以此来检验自己的理解是否正确。

重构助你找到臭虫(bugs)

通过对代码进行重构,我们可以深入理解代码的作为,在搞清楚程序结构的同时,找到程序中存在的一些bugs。

越复杂越难以理解的代码越难找到bug所在,相信每个开发人员都有过这样的经验,花费一整天甚至几天的时间调试代码,寻找bug的位置所在,而当找到这个bug之后,却发现可以很容易解决掉它。所以把代码简单化,易理解化会帮助我们更快的找到bug。

重构助你提高编程速度

 

良好设计是快速开发的根本。如果没有良好设计,或许某段时间内你的进展速度,但恶劣的设计很快就会让你的速度慢下来,你会把时间大量花在调试上面,无法添加新功能。修改时间越来越长,因为你必须花越来越多的时间去理解系统,寻找重复代码。

接下来的时间里,我会把我现在学习重构知识的过程记录下来,便于以后参考温习。。。

转载于:https://www.cnblogs.com/wych/archive/2009/07/01/1514622.html

重构(Refactoring)概要描述相关推荐

  1. 重构(Refactoring)

    重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性. 也许有人会问,为什么不在项目开始时多 ...

  2. 重构手册阅读笔记:重构的含义

    重构是安全地改善既有代码设计的一门艺术.有以下几种含义: 重构并不包括对系统的所有修改.如果修改是对设计的改善, 或是增加新的功能, 则均不能被认为是重构. 例如, 极限编程(XP)使用了测试驱动开发 ...

  3. 极限编程(Extreme Programming)—重构

    极限编程(Extreme Programming)-重构 march-bird lucian yjf taopin wl jazz韩伟 nullgate Simon[AKA](转载自cutter.co ...

  4. 什么是重构,什么不是重构

    英文原文:What Refactoring is, and what it isn't,翻译:外刊IT评论 有时候,会有程序员跑到我这里说他们不喜欢某个东西的设计,"我们需要给它来个全面的重 ...

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

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

  6. 重构javascript_JavaScript代码清理:如何重构以使用类

    重构javascript In smaller React projects, keeping all of your component methods in the components them ...

  7. 凯云软件测试项目管理系统系统描述

    一.系统描述 1.拟选厂商简介 凯云联创(北京)科技有限公司(简称:凯云科技)成立于2014年,核心业务是为军方.航空航天.中电.兵器.船舶.核工业.核物理.院校.交通.水利水电.通信以及金融等行业提 ...

  8. 软件测试项目管理系统系统描述

    三.系统描述 1.拟选厂商简介 凯云联创(北京)科技有限公司(简称:凯云科技)成立于2014年,核心业务是为军方.航空航天.中电.兵器.船舶.核工业.核物理.院校.交通.水利水电.通信以及金融等行业提 ...

  9. 2021-06-29凯云软件测试项目管理系统系统描述

    一.系统描述 1.拟选厂商简介 凯云联创(北京)科技有限公司(简称:凯云科技)成立于2014年,核心业务是为军方.航空航天.中电.兵器.船舶.核工业.核物理.院校.交通.水利水电.通信以及金融等行业提 ...

最新文章

  1. 【v2.x OGE教程 18】 Entity相关
  2. E-UTRA channel bandwidths per operating band (36.101)
  3. 基本类型和引用类型的值 函数的传递参数
  4. windows下python虚拟环境virtualenv安装和使用
  5. python 去掉list元素的双引号_一天快速入门 Python
  6. Xilium.CefGlue的入门
  7. Java笔试题库之选题题篇【141-210题】
  8. 《JavaScript 高级程序设计》 7.1 正则表达式支持
  9. redis 缓存 key常量命名规则
  10. if语句写阶跃函数C语言,C语言第四章分支语句.ppt
  11. ubuntu中一些软件的命令安装及设置
  12. php中这个向右的箭头怎么理解呢?$db-query
  13. 大数据之-Hadoop3.x_MapReduce_MapTask源码解析---大数据之hadoop3.x工作笔记0126
  14. matlab仿真高斯脉冲,高斯脉冲comsol仿真
  15. Turtle画图之太阳花
  16. c语言中随机排序函数,利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。 用C语言编程...
  17. 计算机高配方案,电脑主机i5 9400F升10400/GTX1660Super高配吃鸡方案推荐
  18. 下一代CDN如何与智能AI及物联网打通?
  19. Matlab一个错误引发的血案:??? Error using == str2num Requires string or character array input....
  20. 关于Qt数据库相关开发的一些经验总结

热门文章

  1. ThreadLocal学习
  2. 【linux】BootLoader简介(c语言编程)
  3. mysql集群之MHA简单搭建
  4. 推荐!可视化垃圾回收算法(转)
  5. 使用NuGet安装EntityFramework4.2
  6. 一刀两断划分子网例子
  7. 分页存储过程2005
  8. svn上传时显示database is locked
  9. 利用装饰器实现mock和api的局部分离切换
  10. 面试思考,入职初期怎么做