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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值