函数编程基本原理介绍

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

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

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

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

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

纯粹的函数

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

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

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

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

纯函数的好处

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

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

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

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

其他

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


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

查看所有标签

猜你喜欢:

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

Head First PHP & MySQL(中文版)

Head First PHP & MySQL(中文版)

Lynn Beighley、Michael Morrison / 苏金国、徐阳 / 中国电力 / 2010-6 / 98.00元

通过《深入浅出PHP&MySQL(影印版)》,你将学习:准备好把你的静态HTML网页提升到下一个层次并使用PHP和MySQL建立数据库驱动的网站了吗?《深入浅出PHP& MysQL》是一本快捷实用的指南,让你的动态网站快速运行。自己动手建立实际应用程序,从视频游戏高分留言板到在线交友网站。当你完成后,你将可以进行验证表单、使用会话ID和cookies工作、执行数据库查询和联接、处理文件I/0操作等......一起来看看 《Head First PHP & MySQL(中文版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

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

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具