五 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;
}
分享到:
相关推荐
第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 ...
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...
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:...
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
3.2 Long Method C 过长函数) ··· ·· ··· ·· ·· ·· · ·· ·· ·· ····· ····· ·….......... …························· …·············...