这是我参与「第四届青训营 」笔记创作活动的的第四天
上一篇主要讨论的编码中各司其职的原则,今天记录一下过程抽象的原则。
什么是过程抽象?
过程抽象
- 用来处理局部细节控制的一些方法
- 函数式编程思想的基础应用
未来前端的发展趋势是函数式编程的,因此平常学习中要更加注重抽象的能力的培养
怎么抽象?
应用函数式编程思想,是处理局部细节控制的方法。
举例:节流、防抖等方面的应用。
纯函数:返回结果只依赖于它的参数,并且在执行过程里面没有副作用
优点:
- 方便进行单元测试!
- 减少系统中非纯函数的数量,从而使得系统可靠性增加
高阶函数就是函数中可以传入另一个函数作为参数的函数
- 以函数作为参数
- 以函数作为返回值
- 常用于作为函数装饰器
常用的高阶函数
- Once:对某个操作的执行次数进行限制
- Throttle:节流函数,限制函数触发的频率,每个delay时间间隔,最多只能执行函数一次
- Debounce:减少函数触发的频率,在一定延迟后才执行。从触发开始到延迟结束,只执行函数一次
- Consumer:接受一个输入参数并且无返回的操作,如果某一类操作不需要返回接口,可以对该类操作抽取逻辑。
- Iterative:支持多个参数迭代求解
比如:
function HOF0(fn) {
return function(...args) {
return fn.apply(this, args);
}
}
编程范式
尽量使用声明式,不要用命令式。
命令式
let list = [1, 2, 3, 4];
let mapl = [];
for(let i = 0; i < list.length; i++) {
mapl.push(list[i] * 2);
}
复制代码
声明式
let list = [1, 2, 3, 4];
const double = x => x * 2;
list.map(double);
复制代码
总结:
在编写代码的过程中,不仅要注重功能的实现,还要思考如何写出优雅的代码,要有这样的意识。