react 函数式编程_函数式编程和React式体系结构第1部分

react 函数式编程

编写企业软件非常困难,作为工程师,我们的工作是在时间,预算和资源的范围内为企业创造价值。 复杂性使我们难以实现这一价值。 我们将始终必须处理系统的基本复杂性 ,为此,我们需要与领域专家进行有效沟通以帮助我们为解决方案建模。 同时,我们必须将意外的复杂性降到最低,以便工程方面的关注不会增加开发过程中的摩擦。 本系列博客文章的目的是了解功能编程,React式编程和参与者模型如何帮助我们实现结构化程序并应对复杂性。

函数式编程的要素

可组合性

组合是将各个部分组合成一个整体的行为,程序可以表示为建立在其他功能之上的功能,这些功能代表了从人到机器的不同抽象层次。 这与“ 之”的思想所表达的解决人类问题的本能方法非常吻合 。 复杂的问题分为易于解决的较小和较简单的问题,因此全局解决方案是较小问题的所有解决方案的组合。 不同的编程范例根据组合子问题的解决方案所使用的工具,以不同的方式对问题进行了剖析。 当在纯函数上使用时,可组合性会更有效,以避免出现隐藏副作用带来的问题。

参照透明性和纯度

函数编程的基本构建块是功能应用到其输入值。 一个将一个值和一个值与其输入关联而没有其他效果的函数称为纯函数 ; 也就是说,对程序执行唯一可见的功能是给定输入结果的计算。 函数应用程序基本上是一个将输入映射到输出的表。 此概念的形式化称为引用透明性 ,它是表达式的一般属性,而不仅仅是函数。 这意味着您可以使用任何语言和任何范例来实现引用透明。 引用透明表达式可以随时进行评估,这使我们可以用其实现替换符号,并且执行流程现在不再相关,从而可以进行并行评估而不会出现来自竞争条件的问题; 除了先前计算的结果外,还可以缓存结果,从而以牺牲内存为代价来提高性能。 从人类的角度来看,由于我们有限的推理能力,纯度甚至更有价值。

方程推理替代模型

使用引用透明表达式,我们可以用将符号替换为它们的定义的方式,就像我们将代数表达式求解为最简单的形式一样。 我们可以一步一步地用一个等效的术语代替一个术语。 此属性启用有关程序的方程式推理 。 另一方面,由于评估的所有效果都是纯局部的,因此替换属性使推理更加简单。 这使我们不必在代码块中跟踪更新的顺序,从而使理解仅限于功能应用程序。 将较小的功能组合为较大的功能变得更加容易,并且类似于从其组件组装产品的行为。

不变性和局部可变性

函数式编程促进不可变状态,以实现引用透明性。 不变状态的直接影响是,我们将不会出现竞争条件,从而使并发编程的问题变得更少。 众所周知,没有银弹,实际上所有这一切都是有代价的。 可变状态具有更高的性能,并且在内存中所需的实例更少,但是在并发场景中进行推理变得更加困难。 在应用函数式编程原理时,我们将尝试将可变状态的数量减少到需要优化性能或内存消耗的代码中。 我们可以实现这种隐藏的可变性作为实现细节,因此不会污染客户端代码的纯度。

高阶函数

在函数式编程中,函数是一等公民,因此它们具有突出的作用,可以将它们视为值,并作为参数传递给其他函数以产生更复杂的计算。 将其他函数作为参数接受或将计算结果返回的函数称为高阶函数

懒惰评估

组合功能允许它们之间严格同步,直到只有在真正需要结果时才进行计算,并暂停直到需要另一个值为止。 这允许可能无限的值流,这些值流将根据需要与终止条件进行解耦循环,以进行更模块化的设计。 再也没有银弹了,尽管懒惰的评估使开发人员不必在控制应用于引用透明表达式时必须控制执行流程,但在应用于副作用而克服了设计要提供的模块化功能时,要理解它更具挑战性。

结论:模块化

模块化软件是设计良好的软件,因为它由独立的组件组成,可以在合作交付价值的同时进行替换或扩展而不会引起波纹效应。 函数式编程的主要好处是改进了由较小,可测试和可重用的组件(可以独立理解)构建的代码的模块化。 整体的含义仅取决于组件的含义以及组合它们的方式。 由于功能的行为就像连接的黑匣子,因此简化了有关软件的推理。

在下一部分中,我将介绍React式体系结构并解释为什么函数式编程非常适合它。

资源资源

翻译自: https://www.javacodegeeks.com/2017/10/functional-programming-reactive-architecture-part-1.html

react 函数式编程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值