《架构整洁之道》读书笔记 - 编程范式篇
概述
最近阅读了 Robert C. Martin 的《架构整洁之道》中关于编程范式的章节。这部分主要介绍了三种主要的编程范式:结构化编程、面向对象编程和函数式编程。每种范式都通过某种方式对程序控制权或数据进行了限制。
结构化编程
由 Dijkstra 在 1968 年提出 核心思想:限制直接转移控制权 引入了模块化和测试的概念 去除了无限制的 GOTO 语句,引入了 if/then/else 和 do/while/until 等结构 主要贡献:让程序可以被分解为可证明的单元
面向对象编程
核心特性:封装、继承和多态 最重要的是多态,它为插件架构提供了基础 通过多态实现了依赖反转 允许控制源代码依赖关系的方向 帮助解决跨模块和跨架构的依赖管理问题
函数式编程
基于 λ 演算 核心思想:不可变性 所有变量都是不可变的 没有赋值语句 通过管理状态的可变性来控制程序的复杂度
个人思考
这三种范式各自解决了不同的问题:
- 结构化编程解决了直接转移控制权的问题
- 面向对象编程解决了间接转移控制权的问题
- 函数式编程解决了变量赋值的问题
在实际开发中,这些范式常常是混合使用的。理解它们的本质和限制,有助于我们在架构设计时做出更好的决策。
实践启示
在设计架构时,要充分利用多态来管理依赖关系 尽可能使用不可变数据,减少状态管理的复杂度 合理划分模块,保证每个组件都是可测试的 在适当的场景选择合适的范式