zoukankan      html  css  js  c++  java
  • 重构----学习心得

    1、重构技术系以微小的步伐修改程序。如果你犯下错误,很容易便可发现它。

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

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

    4、重构的另外一个原因:为了帮助我理解需要修改的代码。这些代码可能是别人写的,也可能是自已写的。

    when:

      1、Duplicated Code(重复的代码):同一class中重复代码可选择提取出方法,然后调用;互为兄弟class,则可选择提取出类superclass;如果2个毫不相关的class,

        则可以考虑对其中一个使用extract class,提取出重复代码到一个独立的class,然后在另外一个class内使用这个新类,所以决定这个函数放在那最合适才是最重要的,

        至少要确保它被

      2、Long Method(过长函数):每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立的函数,并以其用途命名。ps:如果函数内有大量的参数和临时变量,

        它们会对你函数提炼形成障碍。如果只是单单的Extract Method,只会使参数和临时变量转换为参数,并没有多大提升。可以采用Replace Temp with Query来消除这些元素。

        Introduce Paramter Object 和 Preserve Whole Object则可以将过长的参数列变得简洁一些。如果上述步骤都试过了,任然有太多临时变量和参数,那就应该采用Repalce 

        Method with Method Object。如果存在条件式和循环常常也是提炼的信号。可以采用Decompose Conditional处理条件式。至于循环,则是提炼为一个函数。

    何时不该重构:1、有时候既有代码实在太混乱,重构它还不如重新写一个来的简单。

           2、项目已近最后期限,也应该避免重构。

     ps: 哪怕你完全了解系统,也请实际测量它的性能,不要臆测。臆测会让你学到一些东西,但十有八九你是错的。

    eg:如果在去旧留新的代码基础上,保留新接口的功能,在旧接口与新接口差距不大的情况下,可以通过对旧接口返回数据封装VO的方法,保证在改变

    接口写法的前提下,旧接口返回的数据接口任然不变。

    解释:

    Replace Temp with Query 可参考 http://www.cnblogs.com/matchcolor/archive/2010/07/27/1785693.html
    
    Introduce Paramter Object 可参考 http://book.51cto.com/art/201002/182694.htm
    
    Preserve Whole Object 可参考 http://www.cnblogs.com/matchcolor/archive/2010/07/27/1785695.html
    
    Repalce  Method with Method Object 可参考 http://my.oschina.net/u/134516/blog/127200 or http://blog.csdn.net/bendan999999999/article/details/3255156
    
    Decompose Conditional 可参考 http://www.cnblogs.com/matchcolor/archive/2010/07/27/1785697.html
    

      

    重构手法:引用 -- http://www.cnblogs.com/matchcolor/tag/%E9%87%8D%E6%9E%84/

  • 相关阅读:
    基础知识梳理
    计算机基础
    IAR平台下使用STM32的DSP配置方法
    第五节:STM32输入捕获(用CubeMX学习STM32)
    第四节:定时器中断及定时器产生PWM(用CubeMX学习STM32)
    第三节: 串口通信(用CubeMX学习STM32)
    第二节: 外部中断学习(用CubeMX学习STM32)
    第一节补充: 按键操作(CubeMX加HAL库学STM32系列)
    第一节:用Cube学32之简单IO口操作(点灯及按键)
    STM32程序中使用printf打印中文字符乱码
  • 原文地址:https://www.cnblogs.com/binbang/p/4953092.html
Copyright © 2011-2022 走看看