前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《架构整洁之道》第 6 章 函数式编程

《架构整洁之道》第 6 章 函数式编程

原创
作者头像
巴啦啦的积累
发布2023-05-23 08:31:06
1860
发布2023-05-23 08:31:06
举报
文章被收录于专栏:巴啦啦的积累

均为个人读书笔记,精读并整理出来各个章节的知识点。前面的这几章,书中原文内容本就不多,只提取了重点,都是为了后续内容做铺垫打基础的。

整数平方

在书中,举了一个整数平方的例子,分别以Java代码,和Clojure代码输出前25个整数的平方值。

其区别在于,Clojure中,没有出现一个变量

函数式编程语言中的变量,是不可变的。函数才是一等公民,在这种语言中,全是表达式,不使用语句。

不可变性与软件架构

所有的竞争问题,死锁问题,并发更新问题,都是由于可变变量导致的。所以我们应该关注不可变性。

可变形的隔离

一个架构设计良好的应用程序,应当将程序的内部服务进行切分,分为可变和不可变的组件,不可变组件使用纯函数的方式来执行任务,期间它不更改任务状态和变量(应当也包含数据库)。

可变和不可变之间的组件使用可变组件来通讯。最终等到需要修改状态(数据库)时,应当使用事务性数据库,避免同步更新和竞争状态发生。

大部分处理逻辑应当在不可变组件中,可变组件中的逻辑越少越好。

事件溯源

事件溯源的核心是不再对数据进行删改操作,这样也能避免任何可变变量。例如银行账号余额或库存数据,每一次删改就是一条记录,需要取数据时,将全部流水拉出来计算数据,并上锁。

这得益于日渐发展的存储能力和计算能力,使得这种模式成为可能。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 整数平方
  • 不可变性与软件架构
  • 可变形的隔离
  • 事件溯源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档