函数编程基本原理介绍

栏目: 编程语言 · 发布时间: 6年前

内容简介:经过很长一段时间的学习和面向对象编程的工作,我退后一步思考系统的复杂性。“复杂性是任何使软件难以理解或修改的东西” - 约翰奥特豪特做了一些研究以后,我发现了函数式编程概念,如不变性和纯函数。这些概念是构建无副作用功能的巨大优势,因此维护系统更容易 - 还有其他一些

经过很长一段时间的学习和面向对象编程的工作,我退后一步思考系统的复杂性。

“复杂性是任何使软件难以理解或修改的东西” - 约翰奥特豪特

做了一些研究以后,我发现了函数式编程概念,如不变性和纯函数。这些概念是构建无副作用功能的巨大优势,因此维护系统更容易 - 还有其他一些 好处

纯粹的函数

当我们想要理解函数式编程时,我们学到的第一个基本概念是纯函数。但这究竟意味着什么?是什么让一个函数纯洁?这是一个非常严格的纯度定义:

  • 如果给出相同的参数,它返回相同的结果(也称为deterministic确定性)
  • 它不会引起任何可观察到的副作用

如果你的函数中使用了全局对象则为不纯;如果我们的函数读取外部文件,它不是纯函数 - 文件的内容可以更改;任何依赖于随机数生成器的函数都不可能是纯粹的。

每个函数都是孤立的,无法影响我们系统的其他部分。纯函数是稳定,一致和可预测的。给定相同的参数,纯函数将始终返回相同的结果。是否会发生相同的参数具有不同的结果?我们不需要考虑这种情况 - 因为它永远不会发生。

纯函数的好处

代码肯定更容易测试。我们不需要模仿任何东西。所以我们可以用不同的上下文单元测试纯函数:

  • 给定参数A→期望函数返回值B
  • 给定参数C→期望函数返回值D

不变性: 随着时间的推移不变或无法改变。当数据不可变时,其在创建后就不能被更改。如果要更改不可变对象,使用新值重新创建一个新对象。

引用透明:纯函数+不可变数据=引用透明。基本上,如果函数对于相同的输入始终产生相同的结果,则它是引用透明的。

其他

使用懒惰加载,保持不变性,实现函数组合,禁止空对象,禁止抛出异常等等。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法分析

数据结构与算法分析

韦斯 (Mark Allen Weiss) / 机械工业出版社 / 2009-1-1 / 55.00元

本书是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。 随着计算机速度的不断增加和功能的日益强大,人们对有效编程和算法分析的要求也不断增长。本书把算法分析与最有效率的Java程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。一起来看看 《数据结构与算法分析》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具