11.5 第十一章小结

来源:互联网 发布:沈航网络认证客户端 编辑:程序博客网 时间:2024/06/04 20:45
11.5 第十一章小结



    这一章的主题主要是函数编程的重构,我们已经看到了很多的示例和概念。我们首先讨论了在数学意义上的重构,可以看到,在数学意义上,可以很容易推导出"代码",因此,可以看到一个特定的改变在何时改正。由于其根源在数学中,函数式编程通常有相同的属性。

    我们首先探讨如何能够使用函数类型,以减少代码重复,这是重构的简单情况。然后,我们看到,函数式编程如何容易地跟踪在代码中的相关性,因此,我们可以看到特定的重构是否是正确的。

    下一步,我们重点关注使用 xUnit.net, 进行函数式编程的单元测试。学会如何组合单元测试,使用 F# Interactive 进行交互式测试,因此,如果你担心前面章节中交互式测试,你现在知道,交互式测试只是较大的测试中的一个部分。此外,我们还演示了不变性如何简化了测试代码,因为,我们只需要测试,一个函数是否给出预期的结果,而不需要担心其副作用。

    接着,我们关注了延迟性(laziness)。我们已经看到,延迟性可以用于缓存计算的结果,以便当我们再次访问这个值时,代码会更有效地运行。只要我们只使用不可变的数据结构,这种修改不会改变程序的结果,所以,我们可以把它看作是另一种形式的有用的重构。我们还学习了延迟性可以用于表达有趣的函数概念,比如,无穷的数据类型。事实上,这只是下一章的预告,我们将讨论 C# 的迭代和 F# 序列表达式,这两个使我们能够以更自然的方式来表达序列值。这是一个更大概念的一个示例,所以,我们还将介绍如何改变或扩展通常的代码含义。

原创粉丝点击