六 Remove Assignments t Parameters
你的代码对参数进行赋值的动作。在As3 中除了那些 基原数据 如 String Number int uint Boolean 是安值传递,其余的传递的都是引用值。
所以在As 3.0 中不存在这个问题。
七 Replace Methord with Method Object
你有个大型函数,其中对局部变量的使用,使你无法采用Extact Method
.
动机:小型函数具有其优美动人之处,只要将它重大型函数中提炼出来,就可以大大提高代码的可阅读性。但是局部变量的存在会增加分解函数的难度。ReplaceTemporary with qury 可以帮助你减轻这一负担,但是有时候你会发现根本无法拆解需要拆解的函数。这时,你就应该祭出 函数对象(Method object)这件法宝。将所有的函数对象都变成函数对象的值域。然后你及可以对这个新对象用 Extract Method创造出新函数,从而使原来的大型函数拆解变短。
做法:
参考例子。
eg.
class Account ...
private function gamma(inputVal:int, quantity:int, yearToDate:int): int {
var importantValue1:int = (inputVal * quantity) + delta();
var importantValue2:int = (inputVal * yearToDate) + 100;
if((yearToDate 0 importValue1) > 100) {
importValue2 -= 20;
}
var importantValue3:int = importValue2 * 7;
//and so on
return imortantValue3 -2 * importantValue1;
}
=>为了把这函数变成一个函数对象,首先要声明一个新的Class
class Gamma ...
private var account:Account ;
private var int inputVal;
private var int quantity;
private var int yearToDate;
private var int importtantantValue1;
private var int importtantantValue2;
private var int importtantantValue3;
public function Gamma (souce:Account,inputValArg:int,
quantityArg:int,yearToDateArg:int) {
account = souce;
inputVal = inputValArg;
quantity = quantityArg;
yearToDate = yearToDateArg;
}
public function compute():int {
importtantantValue1 = (inputVal * quantity) + account.delta();
importtantantValue2 = (inputVal * yearToDate ) + 100;
if(( yearToDate - importantValue) > 100 ) {
importtantantValue2 = -= 20;
}
importantValue3 = importantValue2 * 7;
return importantValue3 - 2* importantValue1;
}
class Account ...
private function gamma(inputVal:int, quantity:int, yearToDate:int): int {
return new Gamma(this,inputVal,quantity,yearToDate).compute();
}
这样一来,我们就可以轻松的对 compute()进行 Extract Method而不必担心 引数的传递
分享到:
相关推荐
6.7 Remove Assignments to Parameters(移除对参数的赋值) 131 6.8 Replace Method with Method Object(以函数对象取代函数) 135 6.9 Substitute Algorithm(替换算法) 139 第7章 在对象之间搬移特性 ...
6.7 Remove Assignments to Parameters(移除对参数的赋值) 6.8 Replace Method with Method Object(以函数对象取代函数) 6.9 Substitute Algorithm(替换算法) 第7章 在对象之间搬移特性 7.1 Move Method(搬移...
*Remove Assignments to Parameters 去除参数赋值 Replace Method with Method Object 用方法对象代替方法 Substitute Algorithm 替换算法 Chapter 7:Moving Features Between Objects 在对象之间移动...
移除对参数的赋值动作(Remove Assignments to Parameters) 消除方法中对参数的赋值操作,避免副作用,提高代码的清晰度。 ### 结论 重构是一项持续的过程,它贯穿整个软件生命周期。通过不断地重构,开发者...
第6章 重新组织你的函数 6.1 Extract Method(提炼函数) 6.2 Inline Method(将函数内联化) 6.3 Inline Temp(将临时变量内联化) 6.4 Replace Temp With Query(以查询取代临时变量) 6.5 Introduce Explaining ...
*Remove Assignments to Parameters 去除参数赋值 Replace Method with Method Object 用方法对象代替方法 Substitute Algorithm 替换算法 Chapter 7:Moving Features Between Objects 在对象之间移动...
- **移除对参数的赋值动作 (Remove Assignments to Parameters)**:避免在函数中直接修改传入的参数,提高代码的安全性。 - **移除控制标记 (Remove Control Flag)**:通过逻辑重构,消除不必要的条件判断语句。 - *...
*Remove Assignments to Parameters 去除参数赋值 Replace Method with Method Object 用方法对象代替方法 Substitute Algorithm 替换算法 Chapter 7:Moving Features Between Objects 在对象之间...
*Remove Assignments to Parameters 去除参数赋值 Replace Method with Method Object 用方法对象代替方法 Substitute Algorithm 替换算法 Chapter 7:Moving Features Between Objects 在对象之间移动...
*Remove Assignments to Parameters 去除参数赋值 Replace Method with Method Object 用方法对象代替方法 Substitute Algorithm 替换算法 Chapter 7:Moving Features Between Objects 在对象之间...
10. **移除对参数的赋值 (Remove Assignments to Parameters)** - **目的**:消除方法中对参数的直接修改,保持参数的不可变性。 - **应用场景**:适用于增强方法的健壮性和可预测性。 这些重构手法不仅有助于...
- **Remove Assignments to Parameters (删除对参数的赋值):**避免修改方法参数。 - **Remove Control Flag (删除控制标志):**简化控制流,减少不必要的布尔变量。 - **Remove Middle Man (删除中间人):**去除...
《Scala函数式编程原理课程第二周作业详解》 在Coursera平台上,"Functional Programming Principles in Scala"是一门深入探讨Scala语言以及函数式编程思想的热门课程。这门课的第二周作业,不仅涵盖了基本的Scala...
42. **Remove Assignments to Parameters(删除对参数的赋值)** - 描述:去除不必要的参数赋值操作。 - 场景:提高代码的简洁性。 43. **Remove Control Flag(删除控制标志)** - 描述:删除冗余的控制标志...
**标题解析:** "Functional Programming Principles in Scala Assignments Week1" 指的是Coursera上一门关于函数式编程原理的Scala课程的第一周作业。这表明我们即将探讨的内容与Scala编程语言以及函数式编程的基本...
博主的博客Verilog之blocking & nonblocking assignments有些内容是参考了这篇英文文献的,其中对verilog中有关阻塞与非阻塞赋值语句的8种准则进行了详细的举例说明,读者可以下载文章进行详细阅读,以便更好地理解...
"Functional Programming Principles in Scala Assignments Week3" 指的是Coursera上一门关于函数式编程原理的Scala课程中的第三周作业。这通常涉及到一系列编程任务,旨在帮助学生深入理解Scala语言中的函数式编程...
吴恩达 Programming Assignments of Deep Learning Specialization (5 courses)
二、PPT内容解析 课程PPT包含了丰富的理论知识和实例分析,从基础的图像表示、特征提取,到卷积神经网络的结构与工作原理,再到深度学习中的优化算法和数据预处理策略,都进行了详尽的阐述。此外,PPT还介绍了最新的...
matlab嵌入三维函数代码计算机视觉分配 这些是我为慕尼黑工业大学举行的SS2018计算机视觉课程作业的解决方案。 所有分配都将在Matlab中完成,仅使用其标准功能(不允许使用工具箱)。 自从该课程以德语授课以来,...