| 作者: | Yehonathan Sharvit |
| 语言: | 英文 |
| 出版年份: | 2022 |
| 下载链接: |
书籍均收集自互联网,仅供学习和研究使用,请莫用于商业用途。谢谢合作。 |
《Data-Oriented Programming: Reduce software complexity》是一本面向有实际开发经验程序员的编程范式书,核心问题不是性能意义上的“数据导向”,而是如何通过把代码与数据分离、让数据保持不可变、用通用数据结构和显式 schema 降低信息系统的复杂度。作者 Yehonathan Sharvit 将 Clojure 社区中的若干设计原则抽离出来,用 JavaScript 为主要示例语言,说明这些原则并不依赖 Clojure,也不要求读者完全放弃 OOP 或 FP。
全书以一个虚构的软件项目和人物对话推进:先展示传统 OOP 在类关系、可变状态、序列化、继承层次上的复杂性,再逐步引入 DOP 的实践方法。它关注的是前端、后端、Web 服务这类“处理信息”的系统,重点放在可理解性、可测试性、并发安全、数据验证和维护成本上,而不是算法性能优化或底层内存布局。
第一章从一个图书馆管理系统的 OOP 设计入手,分析代码与数据混在类中、对象可变、数据被封装在成员里、行为被锁在方法中会怎样增加理解成本。
第二章到第六章建立 DOP 的基础:把数据实体与代码模块分开,用 map、list 等通用结构表示业务数据,用通用函数进行数据操作;随后讨论多版本系统状态、结构共享、乐观并发控制,以及为什么面向数据的函数更容易写单元测试。
第七章到第十一章把方法扩展到更接近生产环境的场景,包括用 JSON Schema 做数据验证、用 atom 思路管理线程安全状态、借助 persistent data structures 在大数据集合上保持不可变性,并把同样的思想应用到数据库访问和 Web service 请求/响应处理中。
第十二章到第十五章转向长期维护:函数参数与返回值验证、schema 驱动的测试与数据模型图、多态的 multimethod 实现、嵌套数据的高级操作,以及通过确定性和可复现数据改进调试体验。
附录补充 DOP 四项原则、在 Java/C# 等静态类型语言中的通用数据访问方式、DOP 与其他编程范式的关系,以及书中用到的 Lodash 函数参考。
本书适合已有几年高阶语言经验的前端、后端或全栈开发者,尤其是长期在 Java、C#、Ruby、Python、JavaScript 等生态中处理业务系统、API、数据库对象和测试复杂度的人。OOP 背景读者会获得较强的观念冲击;熟悉函数式编程的读者阅读门槛较低,但仍能从 schema、数据表示和工程化落地中得到启发。若只想学习某门语言语法、框架教程,或寻找 DOD 式缓存/内存布局优化,本书并不匹配。
这本书的价值在于把“让数据保持为数据”讲成了一套可迁移的工程方法,而不是把它包装成某个语言或框架的信仰。它既有明确原则,也有贯穿式示例,能帮助读者重新审视对象模型、ORM、API 边界、测试和并发状态管理中的偶然复杂度。缺点是叙事化写法和 JavaScript/Lodash 示例并非所有读者都喜欢,但如果你关心的是业务系统如何变得更容易理解、验证和演化,它值得投入时间阅读。