软件测试Python专家之路程序员

软件工程快速入门教程10- 函数式编程

2019-07-20  本文已影响59人  python测试开发

什么是函数编程?

函数式编程(也称为FP Functional Programming)是一种通过创建纯函数来思考软件构造的方法。它避免了在面向对象编程中观察到的共享状态,可变数据的概念。

功能语言依赖于表达式和声明而不是执行语句。因此,与依赖于本地或全局状态的其他过程不同,FP中的值输出仅取决于传递给函数的参数。

函数式编程的特点

函数式编程的历史

函数式编程语言

任何FP语言的目标都是模仿数学函数。但是,函数编程的基本计算过程是不同的。

这里是一些最着名的函数式编程语言:

基本函数编程术语和概念

First-class是一种定义,归因于对其使用没有限制的编程语言实体。因此,
First-class可以出现在程序的任何地方。

高阶函数允许部分应用或currying。此技术一次将一个函数应用于其参数,因为每个应用程序返回一个接受下一个参数的新函数。

Function Pure(a,b)
{
    return a+b;
}
int z;
function notPure(){
    z = z+10;
}

### 函数组合
函数组合结合了两个或更多功能来制作新功能。

- 共享共享状态
共享状态是OOP编程中的重要概念。它正在向对象添加属性。例如,如果HardDisk是对象,则可以将存储容量和磁盘大小添加为属性。

副作用是在被调用函数之外发生的任何状态变化。任何FP编程语言的最大目标是通过将其与其他软件代码分离来最小化副作用。在FP编程中,从其他部分中消除副作用至关重要.

### 参考资料
- [python测试开发项目实战-目录](https://china-testing.github.io/practices.html)
- [python工具书籍下载-持续更新](https://china-testing.github.io/python_books.html)
- [python 3.7极速入门教程 - 目录](https://china-testing.github.io/python3_quick.html)
-   讨论qq群630011153 144081101
- [原文地址](https://china-testing.github.io/pptx.html)
-   [本文涉及的python测试开发库](https://github.com/china-testing/python-api-tesing) 谢谢点赞!
-   [本文相关海量书籍下载](https://github.com/china-testing/python-api-tesing/blob/master/books.md)

### 函数式编程的好处
- 允许您避免混淆代码中的问题和错误
- 更容易测试和执行单元测试和调试FP代码。
- 并行处理和并发
- 热代码部署和容错
- 使用更短的代码提供更好的模块化
- 提高开发人员的生产力
- 支持嵌套函数
- 函数构造,如懒惰地图和列表等。
允许有效使用Lambda Calculus
功能编程的局限性
函数式编程范式并不容易,因此初学者很难理解
在编码期间很难维护尽可能多的对象
需要大量的嘲弄和广泛的环境设置
重用非常复杂,需要不断重构
对象可能无法正确表示问题
功能编程与面向对象编程
功能编程

OOP

FP使用不可变数据。

OOP使用Mutable数据。

遵循基于声明式编程的模型。

遵循命令式编程模型。

重点是:“你在做什么。在计划中。”

它的重点是“你如何进行编程”。

支持并行编程。

不支持并行编程。

它的功能没有副作用。

方法会产生很多副作用。

使用带递归的函数调用和函数调用执行流控制。

流控制过程使用循环和条件语句进行。

陈述的执行顺序不是很重要。

陈述的执行顺序很重要。

支持“数据抽象”和“行为抽象”。

仅支持“数据抽象”。

结论

功能编程或FP是基于一些基本定义原则思考软件构建的一种方式
功能编程概念侧重于结果,而不是过程
任何FP语言的目标都是模仿数学函数
一些最着名的函数式编程语言:1)Haskell 2)SM 3)Clojure 4)Scala 5)Erlang 6)清洁
“纯函数”是一个函数,其输入被声明为输入,并且不应隐藏它们。产出也被宣布为产出。
不可变数据意味着您应该能够轻松地创建数据结构,而不是修改已存在的数据结构
允许您避免混淆代码中的问题和错误
功能代码并不容易,因此初学者很难理解
FP使用不可变数据,而OOP使用Mutable数据
上一篇 下一篇

猜你喜欢

热点阅读