11.5 第十一章小结
来源:互联网 发布:沈航网络认证客户端 编辑:程序博客网 时间:2024/06/04 20:45
11.5 第十一章小结
这一章的主题主要是函数编程的重构,我们已经看到了很多的示例和概念。我们首先讨论了在数学意义上的重构,可以看到,在数学意义上,可以很容易推导出"代码",因此,可以看到一个特定的改变在何时改正。由于其根源在数学中,函数式编程通常有相同的属性。
我们首先探讨如何能够使用函数类型,以减少代码重复,这是重构的简单情况。然后,我们看到,函数式编程如何容易地跟踪在代码中的相关性,因此,我们可以看到特定的重构是否是正确的。
下一步,我们重点关注使用 xUnit.net, 进行函数式编程的单元测试。学会如何组合单元测试,使用 F# Interactive 进行交互式测试,因此,如果你担心前面章节中交互式测试,你现在知道,交互式测试只是较大的测试中的一个部分。此外,我们还演示了不变性如何简化了测试代码,因为,我们只需要测试,一个函数是否给出预期的结果,而不需要担心其副作用。
接着,我们关注了延迟性(laziness)。我们已经看到,延迟性可以用于缓存计算的结果,以便当我们再次访问这个值时,代码会更有效地运行。只要我们只使用不可变的数据结构,这种修改不会改变程序的结果,所以,我们可以把它看作是另一种形式的有用的重构。我们还学习了延迟性可以用于表达有趣的函数概念,比如,无穷的数据类型。事实上,这只是下一章的预告,我们将讨论 C# 的迭代和 F# 序列表达式,这两个使我们能够以更自然的方式来表达序列值。这是一个更大概念的一个示例,所以,我们还将介绍如何改变或扩展通常的代码含义。
这一章的主题主要是函数编程的重构,我们已经看到了很多的示例和概念。我们首先讨论了在数学意义上的重构,可以看到,在数学意义上,可以很容易推导出"代码",因此,可以看到一个特定的改变在何时改正。由于其根源在数学中,函数式编程通常有相同的属性。
我们首先探讨如何能够使用函数类型,以减少代码重复,这是重构的简单情况。然后,我们看到,函数式编程如何容易地跟踪在代码中的相关性,因此,我们可以看到特定的重构是否是正确的。
下一步,我们重点关注使用 xUnit.net, 进行函数式编程的单元测试。学会如何组合单元测试,使用 F# Interactive 进行交互式测试,因此,如果你担心前面章节中交互式测试,你现在知道,交互式测试只是较大的测试中的一个部分。此外,我们还演示了不变性如何简化了测试代码,因为,我们只需要测试,一个函数是否给出预期的结果,而不需要担心其副作用。
接着,我们关注了延迟性(laziness)。我们已经看到,延迟性可以用于缓存计算的结果,以便当我们再次访问这个值时,代码会更有效地运行。只要我们只使用不可变的数据结构,这种修改不会改变程序的结果,所以,我们可以把它看作是另一种形式的有用的重构。我们还学习了延迟性可以用于表达有趣的函数概念,比如,无穷的数据类型。事实上,这只是下一章的预告,我们将讨论 C# 的迭代和 F# 序列表达式,这两个使我们能够以更自然的方式来表达序列值。这是一个更大概念的一个示例,所以,我们还将介绍如何改变或扩展通常的代码含义。
- 11.5 第十一章小结
- CSAPP 第十一章:网络编程小结
- unix网络编程-第十一章-小结
- c primer plus 第十一章学习小结
- 汇编语言学习小结(第十章和第十一章)
- 【C++】《C++标准程序库》小结第十一章-String
- c++primer第十一章关联容器小结-11
- 第十一章
- 第十一章
- 第十一章
- 第十一章
- 第十一章
- 第十一章
- 第十一章
- 第十一章
- 第十一章(11.1——11.7)小结:运算符重载
- JHTP小结_第十一章_深入理解异常(Exception Handling)
- 第十一届浙江省大学生程序设计竞赛小结
- 备份海娜韵会员管理系统数据库数据 (mysql/全量备份)
- linuxshell 读书笔记四 (unix shell 第三版)
- GTK+学习笔记2——布局管理
- DM365的UBL源码分析
- 回溯法解N皇后问题(待优化)
- 11.5 第十一章小结
- C语言中可变参数宏
- 进程和线程有什么区别?什么是多线程?
- java获取当前类的绝对路径
- oj32 An problem about date
- 程序员成熟的标志
- 字画卷动类的实现代码
- C#中(int)、int.Parse()、int.TryParse、Convert 区别
- Java 运行时监控,第 3 部分: 监控应用程序生态系统的性能与可用性