第3章 编程范式总览
- 结构化编程
结构化编程对程序控制权的直接转移进行了限制和规范 - 面向对象编程
面向对象编程对程序控制权的间接转移进行了限制和规范 - 函数式编程
函数编程对程序中赋值过行了限制和规范
第4章 结构化编程
- 可推导性: 人们可以用顺序结构、分支结构、循环结构这三种结构构造出任何程序
- goto是有害的
- 功能性降解拆分: 可将模块递归降解为可推导的单元
- 形式化证明没有发生
- 科学来救场
- 测试:测试的作用是让我们得出某段程序已经足够实现当前目标这一结论。
功能性降解拆分仍然是最佳实践之一
第5章 面向对象编程
- 封装
- 继承
- 多态
- 依赖反转
第6章 函数式编程
- 不可变性与软件架构
软件架构师要操作变量的可变性。因为所有竞争问题、死锁问题、并发更新问题都是由可变变量导致的。 - 可变性的隔离
常见方式是将应用程序或内部服务进行切分,划分为可变的和不可变的两种组件。
我们通常会采用某种事务型内存来保护可变变量
软件件架构构师应该着力于将大部分处理逻辑都归于不可变组件中,可变状态组件的逻辑应该越少越好。 - 事件溯源
在这种体系下,我们只存储事务记录,不存储具体状态,当需要具体状时,我们只要从头开始计算所有的事务即可。