一.Why(优点)
- 易于开发、调试、测试————只要给定函数的输入参数,返回的结果必定相同。因此,每一个函数都可以看作独立稳定的逻辑单元,并可组合成更复杂稳定的业务逻辑。
- 易于并发编程————函数式编程不需要考虑"死锁",因为它不修改变量,不必担心一个线程的数据,被另一个线程修改,所以可以很放心地把工作分摊到多个线程处理。
- 易于热升级部署————函数式编程没有副作用,只要保证接口不变,内部实现是外部无关的。
二.what(特点)
- 强调值的不可变性
- 函数的输入应该对应唯一的输出
三.How(原则)
- 通过创建新的变量来代替修改原有变量:从而避免使用了非预期的变量值。
- 尽可能创建较小的纯函数:函数内不引用或修改外部状态,将函数内对外部的依赖参数化以明确依赖,函数有返回值且该值完全由函数参数决定。
- 尽量缩小或隔离副作用影响范围:常见的副作用操作——文件IO、DB操作、http 请求、可变数据、打印日志、获取用户输入、DOM 操作、访问系统状态等,只要是跟函数外部环境发生的交互就都是副作用。
四、缺点
因为在函数式编程的计算处理过程中,值都是以复制的方式传递的,所以内存开销较大
参考链接: 函数式编程指北