zoukankan      html  css  js  c++  java
  • 重构(Refactoring)概要描述

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

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

    重构(Refactoring)

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

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

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

    重构改进软件设计

     

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

    重构使软件更易被理解

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

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

    重构助你找到臭虫(bugs)

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

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

    重构助你提高编程速度

     

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

    接下来的时间里,我会把我现在学习重构知识的过程记录下来,便于以后参考温习。。。
  • 相关阅读:
    LeetCode--Sudoku Solver
    LeetCode--Merge Intervals
    LeetCode--Valid Number
    LeetCode--Max Points on a Line
    1.1
    智能指针原理与简单实现(转)
    C++内存管理(转)
    算法题--扔棋子
    LeetCode--Substring with Concatenation of All Words
    线性代数与MATALB1
  • 原文地址:https://www.cnblogs.com/wych/p/1514622.html
Copyright © 2011-2022 走看看