2、重新组织函数

来源:互联网 发布:淘宝插件魔镜 编辑:程序博客网 时间:2024/05/11 02:59

    1、Extract Method(提炼函数)
      1、无局部变量
      2、有局部变量
        1、被提炼代码段只是读取变量的值,并不修改他们。
          简单传给目标函数
        2、被提炼代码段对局部变量再赋值
          1、如果发现源函数的参数被赋值,使用Remove Assignments to Parameters
          2、变量只在被提炼代码段中使用
            将临时变量的声明移到被提炼代码段中。
          3、被提炼代码之外的代码也使用了这个变量
            1、如果这个变量在被提炼代码段之后未再被使用
              只需要直接在目标函数中修改它就可以了。
            2、如果被提炼代码段之后还使用了这个变量
              让目标函数返回该变量改变后的值。
        3、返回变量不止一个
          1、挑选另一块代码来提炼,让每个函数都只返回一个值,可以安排多个函数,用以返回多个值。
          2、如果开发语言支持“出参数”,可以使用他们带回多个返回值。
    2、Inline Method(内联函数)
      1、当调用函数内部非常清晰易读,则可以考虑将调用函数去掉,直接使用代码块。
      2、你手上有一群组织不甚合理的函数。可以将他们都内联到一个大型函数中,再从中提炼出组织合理的小型函数。 在实施Replace Method with Method Object之前先这么做,往往可以获得不错的效果。把所要的函数的所有调用对象的函数内容 都内联到函数对象中。比起既要异动一个函数、又要移动它所调用的其他所有函数,将整个大型函数作为整体来移动会比较简单。
    3、Inline Temp(内联临时变量)
      你有一个临时变量,只被简单表达式赋值一次,而他妨碍了其他重构。
    4、Replace Temp With Query(以查询函数取代临时变量)
    5、Introduce Explaining Variable(引入解释性变量)
      当表达式非常复杂并且难以阅读。尤其是在条件表达式中。
    6、Split Temporary Variable(分解临时变量)
      当某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果。
    7、Remmove Assignments To Parameters(移除对参数的赋值)
      以一个临时变量取代该参数的位置。
    8、Replace Method With Method Object (以函数对象取代函数)
      假如有一个大型函数,其中对局部变量的使用无法使你采用Extract Method,将这个函数放进一个单独对象中,如此一来局部变量就成了 对象的内字段,然后你可以在同一个对象中将这个大型函数分解为多个小型函数。
    9、Substitute Algorithm(替换算法)
      用另一个简单的算法来替换原来的方法
0 0
原创粉丝点击