1. 代码除了需要跑起来,还需要易读、易扩展、易维护,甚至可以直接重用。
2. 核心要解决的问题是:分离控制和逻辑。控制是对程序流转且业务逻辑无关的框架层控制;逻辑即为实际的业务逻辑。
3. 控制和逻辑构成了整体的软件复杂度,有效分离两者能让系统最大的简化。
4. 优良的软件架构不是一成不变的,需要不断打磨和改进。
5. 架构的目标是用最小的人力成本来满足构建和维护该系统的需求。
6. 架构的优劣可以用满足用户需求所需的成本来衡量。
7. 好的系统架构设计应该尽可能做到与形状无关。
8. 常犯的错误是将第三优先级的事情提到了第一优先级去做,重要的系统架构问题让位给了不重要的系统行为功能。
9. 软件架构师本身应该更关注系统的整体结构,他必须创建出一个可以让功能实现起来更容易、修改起来更简单、扩展起来更轻松的架构。
10. 在软件架构的资源方面,需要和需求方做足够的抗争。
11. 编程方式指的是编写程序的模式。
12. 我们通过无法证伪来证明的软件的正确性,前提是程序需要具备可证明性,即可测试性。
13. 封装指的是可见性;继承主要是让我们可以在某个作用域内对外部定义的变量和函数进行覆盖。
14. 归根结底,多态是函数指针的一种应用。
15. 依赖关系都可以通过引入接口的方式进行反转,即架构师可以完全控制源码的依赖关系。
16. 所有竞争、死锁、并发更新问题都是由可变变量导致的。
17. 应用程序内部可划分为可变和不可变两种组件,不可变组件用纯函数方式来执行任务,期间不更改任何状态。
18. 一个良好的设计是将状态修改的部分和不需要修改的部分隔离成单独的组件;架构师应该着力于将大部分处理逻辑都归于不可变组件中。
2. 核心要解决的问题是:分离控制和逻辑。控制是对程序流转且业务逻辑无关的框架层控制;逻辑即为实际的业务逻辑。
3. 控制和逻辑构成了整体的软件复杂度,有效分离两者能让系统最大的简化。
4. 优良的软件架构不是一成不变的,需要不断打磨和改进。
5. 架构的目标是用最小的人力成本来满足构建和维护该系统的需求。
6. 架构的优劣可以用满足用户需求所需的成本来衡量。
7. 好的系统架构设计应该尽可能做到与形状无关。
8. 常犯的错误是将第三优先级的事情提到了第一优先级去做,重要的系统架构问题让位给了不重要的系统行为功能。
9. 软件架构师本身应该更关注系统的整体结构,他必须创建出一个可以让功能实现起来更容易、修改起来更简单、扩展起来更轻松的架构。
10. 在软件架构的资源方面,需要和需求方做足够的抗争。
11. 编程方式指的是编写程序的模式。
12. 我们通过无法证伪来证明的软件的正确性,前提是程序需要具备可证明性,即可测试性。
13. 封装指的是可见性;继承主要是让我们可以在某个作用域内对外部定义的变量和函数进行覆盖。
14. 归根结底,多态是函数指针的一种应用。
15. 依赖关系都可以通过引入接口的方式进行反转,即架构师可以完全控制源码的依赖关系。
16. 所有竞争、死锁、并发更新问题都是由可变变量导致的。
17. 应用程序内部可划分为可变和不可变两种组件,不可变组件用纯函数方式来执行任务,期间不更改任何状态。
18. 一个良好的设计是将状态修改的部分和不需要修改的部分隔离成单独的组件;架构师应该着力于将大部分处理逻辑都归于不可变组件中。