最好,最持久的程序,里面的函数都比较短。
更好的表达力,更好的分享,更好的选择 —— 都是通过小函数来实现的
因此,有这样一个原则:当想给某个函数写注释的时候,都将要说明的东西
写进一个独立的函数中。
百分之 99% 的时候,要把函数变短,只需使用“提炼函数” 为何,及如何提炼一个函数
可是,如果函数内有大量参数
和临时变量
,会对你的函数提取形成障碍,比如你需要将参数传递给提炼出来的新函数,这时候,你需要一些技巧
你可以使用Replace Temp with Query
来替代临时变量
使用Introduce Parameter Object
及Perserve Whole Object
减少过长的参数
另外,还有一个杀手锏——Replace Function with Command
Replace Temp with Query
以查询替代临时变量
在类
中使用效果最好,类更适合承载数据与行为的组合
Query
在类中为get Value()
❗️ 只适用于只读变量
,如果某个变量被多次赋值
,则将这些计算代码一并提炼到函数中,如下方的discountFactor
确保提炼的函数无副作用,否则使用Separate Query with Modifier
Separate Query with Modifier
将查询函数
与副作用函数
分离
Replace Parameter with Query
参数替代类似
Introduce Parameter Object
引入参数对象(该对象也可是类,或者说使用类更好,因为数据
与行为
能更好的结合)
降低参数的数量,并使数据之间的关系变得更加清晰
用法:将共有行为的数据
放入一个类中
如下,找出温度在(50~55)之外的元素
Perserve Whole Object
保持对象完整
传递整个对象能够更好地应对变化
,同时还能缩短参数列表
Replace Function with Command
以命令取代函数
这里的命令指一个对象(类也行),该对象封装了一个请求
在类中,将参数的传递放入构造器中
而非某个方法中
,可以非常直观的得出该类需要那些参数