架构简洁之道-函数式编程

函数式编程

  • 函数式编程语言中的变量是不可变的

不可变性与软件架构

可变性的隔离

  • 不可变的组件将通过与一个或多个非函数式组件通信的方式来修改改变量状态
  • 一个架构良好的应用程序应该将状态修改的部分和不需要修改状态的部分隔离成单独的组件,然后用合适的机制来保护可变量。应该着力于将大部分处理逻辑都归于不可变组件中,可变状态组件的逻辑应该越少越好。

事件溯源

  • 在这种体系下,我们只存储事务记录,不存储具体状态。当需要具体状态时,我们只要从头开始计算所有的事务即可。如果有足够大的存储量和处理能力,应用程序就可以用完全不可变的、纯函数式的方式来编程。

总结

  • 结构化编程是对程序控制权的直接转移的限制。
  • 面向对象编程是对程序控制权的间接转移限制。
  • 函数式编程是对程序中赋值操作的限制。