Bob*_*Bob 7 functional-programming
我注意到许多函数式编程狂热分子都坚持某些核心概念:
避免国家
避免可变数据
最大限度地减少副作用
等等...
我不只是想知道其他什么东西会使函数式编程,但为什么这些核心思想是好的?为什么避免国家和其他国家好?
Ole*_*ksi 13
简单的答案是,如果您没有额外的状态需要担心,您的代码更容易推理.更简单的代码更易于维护.您不需要担心特定代码(如函数)之外的事情来修改它.这对测试这样的事情有非常有用的影响.如果您的代码不依赖于某些状态,那么为该代码创建自动化测试会变得更加容易,因为您不必担心初始化某些状态.
拥有无状态代码使得创建线程程序变得更加简单,因为您不必担心同时修改/读取共享数据的两个执行线程.您的线程可以运行独立的代码,这可以节省大量的开发时间.
从本质上讲,避免状态会创建更简单的程序.在某种程度上,"移动部件"较少(即代码行可以交互的方式),因此这通常意味着代码更可靠并且包含更少的故障.基本上,代码越简单,就越不会出错.对我来说,这是编写无状态代码的本质.
创建无状态的"功能"代码还有很多其他原因,但对于我来说,它们都归结为简单.
通常,函数式编程意味着:
为什么突变是个问题?想想看:突变是数据结构goto控制流量.也就是说,它允许你以一种相当非结构化的方式任意"跳"到完全不同的东西.因此,它偶尔会有用,但大多数时候对可读性,可测试性和组合性都有害.