PHP:《重构-改善既有代码的设计》之一 重新组织你的函数
来源:互联网 发布:java输出个数的空格 编辑:程序博客网 时间:2024/05/17 21:38
转载:http://www.cnblogs.com/baochuan/archive/2012/03/31/2425441.html
动机:
简短而有良好命名的函数:——finely grained
1、复用机会大。
2、函数读起来像读一系列comments。
3、函数覆写容易。
重点:函数长度关键在于函数名称和函数本体之间的语义距离。如果提炼动作可以强化代码的清晰度,那么就去做。
作法:
1、创建新函数,根据函数的意图命名——以它“做什么”命名,而不是以它“怎样做”命名。
=》 即使Extract Function 非常简单,例如只是消息或函数调用,只要新Function能够以更好方式昭示代码意图,你也应该提炼它。但如果你想不出更有意义的名称,就别动它。
2、将Extract的代码从Source Function 中Move到New Function中。
二、Inline Method
Method Body与Method Name一样清晰易懂的时候,请Inline Method。
三、Inline Temp
一个临时变量,只被一个简单表达式赋值一次,而且赋值完也只使用了一次。——请Inline Temp
四、Replace Temp with Query
如果一个Temp变量,保存一个表达式,将这个表达式Extract Method。——这就是所谓的查询式,query
动机:
1、局部变量会使代码难以提炼。
2、临时变量会驱使你写出更长的代码。如果改成query method,那么class下的method,都可以获得这份信息。——将编写出更清晰的代码。
3、Replace Temp with Query往往是你运用Extract Method之前必不可少的步骤。
作法:
1、找出只被赋值一次的临时变量。
=> 如果临时变量赋值超过一次,考虑使用Split Temporary Variable将它分割成多个变量。
2、对Temp Variable赋值的右侧部分,Extract到一个独立函数中。
=> 将Method声明为private,日后如果有其他class用的时候再放开它(public或protected)。
动机:
1、如果临时变量承担多个责任,它就应该被替换为多个临时变量。每个变量只承担一个责任。
2、同一个临时变量承担两件不同的事情,会令review变得糊涂。
七、Replace Method with Method Object
大型函数对局部变量的使用无法采用Extract Method。那么将这个Method放进一个单独对象中,如此一来,让局部变量成为对象的filed,然后在同一个对象中将大型函数分解为数个小型Method。
动机:
1、将相对独立的代码从大型Method中Extract出来,就可以大大提高代码的可读性。
2、一个Method中,局部变量泛滥成灾,分解这个函数将会非常困难。
3、Replace Method with Method Object 会将所有局部变量变成对象的值域。然后对这个新对象进行Extract Method了。
- PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
- PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
- PHP:《重构-改善既有代码的设计》之一 重新组织你的函数
- 重构改善既有代码的设计--重新组织函数
- 重构改善既有代码的设计--重新组织数据
- 《重构改善既有代码的设计》之重构列表--重新组织函数(一)
- 《重构改善既有代码的设计》之重构列表--重新组织函数(二)
- 《重构改善既有代码的设计》之重构列表--重新组织函数(三)
- 重构—改善既有代码的设计006:重新组织你的函数(Composing Methods)
- PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
- PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
- 重构-改善既有代码的设计:重新组织函数的九种方法(四)
- 重构-改善既有代码的设计:重新组织函数的九种方法(四)
- 重构改善既有代码设计-----重新组织函数
- 《重构--改善既有代码的设计》--重新组织函数(6)
- 《重构--改善既有代码的设计》总结三之重新组织函数
- 2016书单总结--重构改善既有代码的设计--重新组织函数
- 《重构改善既有代码的设计》之重构列表--重新组织数据(一)
- 使用API网关构建微服务
- android CPU架构异常
- 项目:通讯录(C语言的实现)
- 都在做SEO原创?文章编辑更加注重质量
- 魔术球问题
- PHP:《重构-改善既有代码的设计》之一 重新组织你的函数
- Banknote Dataset(钞票数据集)介绍
- mt2503 关于话机sos number设置
- 简单easyui layout三块布局
- [差量更新系列1]BSDiff算法学习笔记
- Perhaps you are running on a JRE rather than a JDK? [ERROR] -> [Help 1]
- java8实战八:java8----默认方法
- 三、内核时钟(2)
- hibernate_day01_