概念定义
函数式编程是一种编程范式、编程思想,也就是一套如何编写程序的方法论。它也属于结构化编程中的一种,主要思想是把程序执行的过程尽量封装成一系列函数嵌套调用,函数是编程语言的最小执行单元,函数式编程倡导的就是面向程序可执行的最小单元编程。它关注的点是要“做什么(函数名)”,“做之前需要什么(函数参数)”,“完成结果是什么(函数返回值)”,而不关注具体的实现过程,因为实现过程都会封装为一个函数,然后对外暴露调用。
特性
- 纯函数
- 函数是一等公民
- 闭包
- 匿名函数
- 高阶函数
PS:本文并未讲解到函数式编程的所有特性,还有更多的如柯里化、惰性求值、参数多态等,大家可以自行百度,了解更多。
纯函数
纯函数指的是相同的输入,永远都会得到相同输出的函数,不依赖外部状态也不会改变外部状态,不会产生副作用。函数式编程需要写的是纯函数。
函数是一等公民
函数与其他数据类型的地位是平等的,函数可以作为参数输入,也可以作为结果输出。
闭包
闭包指的是能读取到函数内部变量的函数,能达到这种现象的写法就是在函数内定义函数,这样内部的函数就能读取到外部函数的变量。通过使用闭包可以实现变量私有化、变量常驻内存。
使用闭包实现变量私有化原理:将变量定义在函数内部,然后再在这个函数定义一个函数来使用这个变量,这样就实现变量私有化了,因为函数内的变量属于局部变量,局部变量不能被外部访问,而闭这个内部函数能访问到外部函数内的变量。
变量常驻内存原理:外部函数定义的变量被内部函数引用,这样变量就会一直被引用,不会被回收。
匿名函数
匿名函数指的是没有名字的函数,常见的是lambda表达式
高阶函数
高阶函数指的是将函数作为参数传入,或将参数作为返回的函数,又或是入参是函数,返回也是函数的函数。
函数式编程的优势:
1.函数式编程使代码更具有确定性,因为纯函数的特性,只有有确定的输入,那么输出就是确定的。不会有意外的情况。
2.函数式编程使得程序更加的模块化,高内聚,只需要关注某个函数式做什么的,需要输入什么,输入指定值的时候会输出什么。
3.函数式编程面向程序执行的最小单元编程,不受外部环境影响,函数内部也不会改变外部环境,容易单元测试。
4.函数式编程式编程的思想驱使把一些功能的实现过程封装为函数,基础功能封装为基础函数,通过不同的基础函数又可以组装成高级函数。如果你把一些通用、常用的功能封装为函数,那么这些函数还可以到处复用,增强代码的复用性。
上面大概列举了一些好处,当然不止这么多了,不过函数式编程的本质就是为了编写出易阅读、易扩展、易复用、易测试的代码。
PS:
- 本文属于本人原创文章,转载请注明出处,如果你觉得这篇文章对你有帮助或启发,也可以来请我喝咖啡。
- 利益相关:本篇文章所有提到的商业品牌或网站链接均为笔者随意想到的或日常使用的,无任何广告费用