`

《重构》笔记 二 重新组织你的函数 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;
}

 

 

分享到:
评论

相关推荐

    重构代码笔记1

    本文以"重构代码笔记1"为出发点,深入探讨了24种常见的代码坏味道及其对应的重构策略。 首先,神秘命名(Mysterious Name)是重构的常见起点,通过改变函数声明和变量名,使其更具描述性,如将`cash0`更改为`cash_...

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

    6.6 Split Temporary Variable(分解临时变量) 128 6.7 Remove Assignments to Parameters(移除对参数的赋值) 131 6.8 Replace Method with Method Object(以函数对象取代函数) 135 6.9 Substitute ...

    重构:改善既有代码的设计.[美]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.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(替换算法)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(替换...

    mysql函数split功能实现

    在MySQL数据库中,虽然没有内置的`SPLIT`函数来直接处理字符串分割任务,但可以通过自定义函数或存储过程来实现类似的功能。以下是对标题和描述中提到的三个MySQL函数和过程的详细解释: 1. **函数`func_...

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

     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...

    NX二次开发UF-DISP-display-temporary-text 函数介绍

    NX二次开发UF_DISP_display_temporary_text 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的...

    NX二次开发UF-DISP-display-temporary-point 函数介绍

    NX二次开发UF_DISP_display_temporary_point 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域...

    NX二次开发UF-DISP-display-temporary-line 函数介绍

    NX二次开发UF_DISP_display_temporary_line 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的...

    NX二次开发UF-DISP-display-temporary-arc 函数介绍

    NX二次开发UF_DISP_display_temporary_arc 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的...

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

    对于过长方法,则可以通过“分解方法”(Split Temporary Variable)或“替换算法”(Substitute Algorithm)等技术进行优化。 ### 构建测试与重构的关系 在重构过程中,构建和维护一套强大的测试套件至关重要。书...

    重构教科书讲解ppt

    《重构教科书讲解》是IT领域中关于代码优化和改进的经典著作,旨在提升软件质量、可维护性和可读性。以下将详细解释其中提到的一些重构原则和技巧: 1. **过长参数列 (Long Parameter List)** - **问题**:函数...

Global site tag (gtag.js) - Google Analytics