首页 > 代码库 > 1.3.5 函数风格如何形成代码
1.3.5 函数风格如何形成代码
1.3.5 函数风格如何形成代码
函数式编程范式无疑会对设计和实现应用程序产生影响,但是,这并不意味着一切要从头开始,因为今天正在使用的许多编程原则,同样适用于函数式应用程序,特别是在设计层,如何组织应用程序方面,尤其如此。
函数式编程在实现层可能彻底改变了解决问题的方法。当然,学习使用函数式编程思想,不必马上就实现彻底改变。在 C# 中学到有效使用方法,在 F# 中,对等效的结构同样适用,当然仍要你的努力。随着函数式开发经验的丰富,将学会更高效、简洁的方式来表达自己的思想。
下面的清单总结了函数式编程对编程风格的影响,从设计层一直到实现层:
■在 .NET 上的函数式程序,面向对象的设计仍然是构建应用程序和组件的主要方法。虽然大量的类型和类被设计成不可变的,但仍然可以创建标准的类,尤其是在与其他 .NET 库协作时。
■函数式编程能够简化许多标准的面向对象的设计模式,因为有些模式直接与 F# 或 C# 3.0 中的语言功能相对应;还有些模式在使用函数方式实现时,根本不需要。本书中将会看到很多这样的例子,特别是在第七章和第八章。
■函数式编程的最大影响是在最底层,即,把算法和应用程序的行为写成代码。函数语言综合了声明式风格、简洁的语法和类型推断,能够帮助我们以可读的方式、简明地表达算法。
在本书后面我们将讨论所有这些方面,将从构成函数和方法的函数式值(functional value)开始,再到设计和体系结构。你会发现函数式编程特有的新模式,我们已经熟悉的面向对象的模式有些同样适合函数式编程,有些不再需要。
下面介绍什么?
到目前为止,我们只谈论在一般意义上的函数式编程。我们已经看到,函数式编程如何扩展编程时的词汇,如何使代码更具声明性;还讨论了不可变的数据结构,及对程序的影响。在下一节,我们会探讨两个基本概念,四个实际问题:
声明式编程与不可变的数据结构通常都会影响代码的清晰、易读,在 1.4.1 和 1.4.2 节中会有两个示例;然后,讨论一个流行的问题,并行化(parallelization),看看声明式编程如何有助于代码的并行,以及不可变的数据结构如何使进程更安全。
到目前为止,我们所关注的只是什么使函数式编程与众不同,以及为什么值得学习,但没有看到实际的代码。在下一节,我们将看到在补充材料中四个示例的源代码。