`

《重构》笔记 二 重新组织你的函数 Split Temporary Variable 。。

阅读更多

五 Split Temporary Variable

 

 你的程序的有某个临时变量被赋值超过一次,她不是循环变量,也不是集用临时变量。

 

  动机:临时变量的各种用途,其中某些用途会很自然的导致临时变量被多次赋值,如果是这样,就说明他们负担了过多的责任,(循环里面的那个不算他的任务就是那样的),那他们就应该被换掉,分为多个变量,没个变来那个承担一个责任,来清晰代码。

 

  做法:

  很简单,看下列子

 

 

  eg.

   下面的列子要计算一个苏格兰布丁的运动距离。在起点处,静止的布丁会受到一个初始力的作用而开始运动。一段时间后,第二个力作用,让她再次加速。根据牛顿第二定律,我们可以计算出运动的距离

 

private function getDistanceTravelled(time:int):Number {
    var result:Number;
    var acc:Number = _primary / _mass;        //第一次赋值

    
    var primaryTime = Math.min(time,_delay);
    result = 0.5 * acc * primaryTime  * primaryTime ;
    var secondaryTime = time -  delay;
    if(secondaryTime  > 0 ) {
        var primaryVel = acc * _delay;
        acc = (_promaryForce + _secondaryForce) / mass  //第二次赋值

        results+= primaryVel  * secondaryTime + 0.5*   acc*secondaryTime * secondaryTime;
    }
     retrun result;
}

 

   注意,acc变量如何被赋值两次的。她有两个责任,一个是,保存一个力造成的初始加速度;另一个是,保存两个力共同造成的加速度。

 

 

private function getDistanceTravelled(time:int):Number {
    var result:Number;
    var  primaryAcc :Number = _primary / _mass;     
    var primaryTime = Math.min(time,_delay);
    result = 0.5 * primaryAcc* primaryTime  * primaryTime ;
    var secondaryTime = time -  delay;
    if(secondaryTime  > 0 ) {
        var primaryVel = primaryAcc* _delay;
        var secondAcc:Number = (_promaryForce + _secondaryForce) / mass 
        results+= primaryVel  * secondaryTime + 0.5*   secondAcc* secondaryTime * secondaryTime;
    }
     retrun result;
}

 

 

分享到:
评论

相关推荐

    重构-改善既有代码的设计 中文版.pdf

    第6章 重新组织你的函数 6.1 Extract Method(提炼函数) 6.2 Inline Method(将函数内联化) 6.3 Inline Temp(将临时变量内联化) 6.4 Replace Temp With Query(以查询取代临时变量) 6.5 Introduce Explaining ...

    重构:改善既有代码的设计(中文高清版)

    6.6 SplitTemporaryVariable(分解临时变量)128 6.7 RemoveAssignmentstoParameters(移除对参数的赋值)131 6.8 ReplaceMethodwithMethodObject(以函数对象取代函数)135 6.9 SubstituteAlgorithm(替换算法)139...

    重构-改善既有代码的设计

     6.6 SplitTemporaryVariable(分解临时变量)128  6.7 RemoveAssignmentstoParameters(移除对参数的赋值)131  6.8 ReplaceMethodwithMethodObject(以函数对象取代函数)135  6.9 SubstituteAlgorithm(替换...

    重构-改善既有代码的设计 中文版

    第6章 重新组织你的函数 6.1 Extract Method(提炼函数) 6.2 Inline Method(将函数内联化) 6.3 Inline Temp(将临时变量内联化) 6.4 Replace Temp With Query(以查询取代临时变量) 6.5 Introduce Explaining ...

    重构:改善既有代码的设计.[美]Martin Fowler.epub【文字版手机格式】

    6.6 Split Temporary Variable(分解临时变量) 6.7 Remove Assignments to Parameters(移除对参数的赋值) 6.8 Replace Method with Method Object(以函数对象取代函数) 6.9 Substitute Algorithm(替换算法) 第7章...

    重构:改善既有代码的设计(中文版).

    6.6 SplitTemporaryVariable(分解临时变量)128 6.7 RemoveAssignmentstoParameters(移除对参数的赋值)131 6.8 ReplaceMethodwithMethodObject(以函数对象取代函数)135 6.9 SubstituteAlgorithm(替换算法)139...

    重构_改善既有代码的设计.pdf

    6.6 SplitTemporaryVariable(分解临时变量)128 6.7 RemoveAssignmentstoParameters(移除对参数的赋值)131 6.8 ReplaceMethodwithMethodObject(以函数对象取代函数)135 6.9 SubstituteAlgorithm(替换算法)139...

    重构-改善既有代码的设计+中文版

     Split Temporary Variable 分离临时变量   *Remove Assignments to Parameters 去除参数赋值   Replace Method with Method Object 用方法对象代替方法   Substitute Algorithm 替换算法  Chapter 7:...

    《重构改善既有代码的设计(2010年版)》(Martin Fowler[美] 著,熊节 译)

    6.6 SplitTemporaryVariable(分解临时变量)128 6.7 RemoveAssignmentstoParameters(移除对参数的赋值)131 6.8 ReplaceMethodwithMethodObject(以函数对象取代函数)135 6.9 SubstituteAlgorithm(替换算法)139...

    重构_改善既有代码的设计

     6.6 SplitTemporaryVariable(分解临时变量)128  6.7 RemoveAssignmentstoParameters(移除对参数的赋值)131  6.8 ReplaceMethodwithMethodObject(以函数对象取代函数)135  6.9 SubstituteAlgorithm(替换...

    重构-改善既有代码的设计(中文版)

     Split Temporary Variable 分离临时变量   *Remove Assignments to Parameters 去除参数赋值   Replace Method with Method Object 用方法对象代替方法   Substitute Algorithm 替换算法  Chapter 7:...

    重建——改善既有代码的设计

    6.6 SplitTemporaryVariable(分解临时变量)128 6.7 RemoveAssignmentstoParameters(移除对参数的赋值)131 6.8 ReplaceMethodwithMethodObject(以函数对象取代函数)135 6.9 SubstituteAlgorithm(替换算法)139...

    重构_改善既有代码的设计[高清版]中文版

     Split Temporary Variable 分离临时变量   *Remove Assignments to Parameters 去除参数赋值   Replace Method with Method Object 用方法对象代替方法   Substitute Algorithm 替换算法  Chapter 7:...

    重构 改善既有代码的设计

     Split Temporary Variable 分离临时变量   *Remove Assignments to Parameters 去除参数赋值   Replace Method with Method Object 用方法对象代替方法   Substitute Algorithm 替换算法  Chapter 7:...

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

     Split Temporary Variable 分离临时变量   *Remove Assignments to Parameters 去除参数赋值   Replace Method with Method Object 用方法对象代替方法   Substitute Algorithm 替换算法  Chapter 7:...

    重构,改善既有代码的设计

     Split Temporary Variable 分离临时变量   *Remove Assignments to Parameters 去除参数赋值   Replace Method with Method Object 用方法对象代替方法   Substitute Algorithm 替换算法  Chapter 7:...

    Temporary Experience

    个人参照用Temporary Experience个人参照用Temporary Experience

    重构_改善既有代码的设计[高清版]【已进行内容识别处理,可搜索,可编辑+有目录】

    3.2 Long Method C 过长函数) ··· ·· ··· ·· ·· ·· · ·· ·· ·· ····· ····· ·….......... …························· …·············...

Global site tag (gtag.js) - Google Analytics