1.参考内容
1.《重构_改善既有代码设计》
2.青玉伏案
一、Extract Method(提取函数)
动机:
1)函数粒度小,复用机会大
2)函数粒度小,覆写更容易
3)使高层函数读起来就像一系列注释
二、Inline Method(内联函数)
动机:
1)将微不足道的小函数进行整合,让代码更清晰。如
func bigNumber() -> { return self.privateNum > 5}
2)如果一个函数使用了太多的间接层,使得系统中所有的函数似乎都是对另一个函数的简单委托,应去掉其中无用的间接层
三、Inline Temp(内联临时变量)
所有对临时变量的引用,替换为对它赋值的表达式自身
四、Replace Temp with Query(以查询取代临时变量)
将一些临时变量使用函数替代
动机:
1)临时变量的问题在于:他们是暂时的,而且只能在所属函数内使用,所以会驱使你写出更长的函数。如果替换为一个函数,同一个类中的所有函数都可以查询到这份信息
2)三、四是对立存在的,使用时要根据场景选择
五、Introduce Explaining Variable(引入解释性变量)
将复杂的表达式拆分成多个变量,以此变量名来解释表达式的用途
六、Split Temporary Variable(分解临时变量)
针对每次赋值,创造一个独立、对应的临时变量
七、Remove Assignments to Parameters(移除对参数的赋值)
以一个临时变量取代该参数的位置
动机:
1)在按值传递的情况下,对参数的任何修改都不会对调用端造成任何影响。但是按引用传递方式会出问题的。
八、Replace Method with Method Object(以函数对象取代函数)
当一个特别长的函数,而且函数中含有比较复杂的临时变量,我们可以考虑将该函数封装成一个类,即函数对象。我们可以将该函数中的参数以及临时变量转变成类的属性,函数要做的事情作为类的方法。