# 《Grokking Simplicity: Taming complex software with functional thinking》

  • 作者:Eric Normand
  • 出版社:Manning,2021出版,有简体中文版《深入浅出简约:用函数式思维驯服复杂软件》
  • 前言:Guy Steele、Jessica Kerr
  • 示例语言:JavaScript;思想完全通用,可迁移 Java/Python/Go/TS 等命令式语言

定位:不是一本函数式编程语言教程,是函数式思维在日常业务代码落地的工程书籍,Jolt停办之后普遍被认为气质最接近旧Jolt Productivity Award(生产力奖)的作品。核心目标:在可变语言里,降低业务系统意外复杂度,提升可测试性、可维护性

核心模型:Actions / Calculations / Data(动作‑计算‑数据)

全书基石,把代码划分为三类,不依赖纯函数式语言编译器能力:

  1. Calculations(计算):纯逻辑,不修改外部状态、无IO;输入→输出,可重复、易于单元测试。
  2. Actions(动作):产生副作用:修改变量、IO、网络、数据库、DOM;不可重复,最难调试。
  3. Data(数据):简单不可变数据结构(plain object、数组),无行为。

设计原则:尽可能把逻辑抽成 Calculations;把 Actions 压缩到最小范围;Data 保持简单;隔离副作用
大部分业务代码复杂度来源:动作与计算混杂在一起。

全书结构

第一部分:Actions, Calculations, and Data(动作、计算、数据)

  1. 识别三类代码,把计算逻辑从动作代码中抽取出来;重构手段。
  2. 动作代码的设计原则:缩小副作用的影响范围。
  3. 可变语言下实现不可变:如何在JS这类原生可变语言做不可变更新,处理不受信任外部输入。
  4. Stratified Design(分层设计):本书重要原创设计模式。
    • 上层:动作(IO、外部交互)
    • 中层:计算(业务规则)
    • 底层:纯数据
      业务规则全部下沉到无副作用计算层;上层只负责调用计算、执行副作用,业务逻辑不在动作层写。

第二部分:First‑class Abstractions(一等抽象)

  1. 一等函数、高阶函数;函数式迭代;替代循环写法。
  2. 组合抽象,消除重复代码;不搞过度抽象。

第三部分:时间与异步(Time)【本书独特章节,同类书少见】

处理异步、并发、回调、时序bug。

  • 引入时间线模型:把事件、请求当作时间线上事件看待;
  • 分析竞态条件;把时间相关逻辑转为可测试计算;
  • 异步代码如何拆分动作与计算,解决异步时序bug。

第四部分:项目实战

完整业务案例,从头到尾应用 Stratified Design;练习识别动作/计算/数据,重构遗留代码。

✔️本书优点

  1. 低门槛函数式思维:不要求懂 Haskell/Clojure,直接用于 JS/TS/Python/Java 现有业务项目,不需要全栈技术栈改造。
  2. 可落地重构方法论:提供识别、拆分、重构的步骤,不是空谈理论。
  3. Stratified Design 分层设计是非常实用的业务架构思路,适合后端、前端、Web应用。
  4. 专门覆盖异步并发时序问题,填补很多干净代码书籍的盲区。
  5. 大量插图、练习、自测题;Grokking系列风格,重在“真正理解内化”。

⚠️局限

  1. 不是FP语法教程:不讲解Monad、Functor等学术概念,不教一门函数式语言。
  2. 示例以JavaScript为主;其他语言读者需要自行翻译示例思路。
  3. 不讨论大规模分布式系统架构,聚焦应用层业务逻辑复杂度治理

适合 / 不适合人群

✅适合:

  • 中高级开发者,业务代码经常陷入状态混乱、难以单元测试;
  • 想学习函数式思想,但不想切换到纯函数语言;
  • 处理前端状态、异步回调、后端业务流程;
  • 需要重构遗留项目,降低副作用蔓延。

❌不适合:

  • 想要学习 Haskell / Clojure 语法;
  • 追求底层、高性能算法。

和相近书籍对比

  1. 《Functional‑Light Java》:Java语境下轻量函数式;偏重语法流。
  2. 《Grokking Simplicity》:偏重代码组织、架构分层、副作用隔离,工程重构视角更强

如果你需要,我可以整理一份Actions‑Calculations‑Data + Stratified Design 速查表

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容