《简洁架构》读书笔记
架构解决的核心问题是在代码规模、人员规模扩大以后依然能够保持高效协作,不至于出现1+1<2的困境。 解决的办法通常是制定规范,约束行为,来提升协作效率。整个计算机的发展史都蕴含了这样的思维,例如计算机网络7层设计等。 架构思维反映在软件工程的方方面面,大致涵盖这几个维度: . 编程范式 . 代码设计 . 组件构建 . 软件架构 编程范式 不同的编程范式(过程式、面向对象、函数式)都是通过对编程模式的约束,实现更有效率的代码协作与管理。 过程式编程的核心是禁止使用goto语句,通过限制程序员对代码的直接控制权,大大提升了程序的可读性和可维护性 面向对象编程的核心是多态性,我们可以通过定义统一的接口(如C++的基类)实现在不影响核心代码的前提下以插件的形式快速扩展程序功能 函数式编程则是通过限制变量修改,实现模块的无状态化(例如云计算中的无服务)从而提升可维护性和横向扩展能力 代码设计 以上编程范式的设计内在理念都构成了如今普遍实践中的架构设计哲学:SOLID SRP单一职责原则:每一个模块应该只负责一类行为或者职责,避免过度耦合 OCP开闭原则:新增功能时应当最小化修改原有代码,实现插件式扩展 LSP里氏替换原则:类的继承需要确保子类能够正常实现基类所有接口,否则就不应当继承,或者重新设计基类 ISP接口隔离原则:任何模块都不要依赖他不需要的模块功能,带来不必要的运维复杂度 DIP 依赖反转选择:代码中抽象接口和具体实现之间需要明确边界,抽象接口被精心设计稳定不变,具体实现只依赖和调用抽象接口,代码依赖和控制流反向 组件构建原则 组件级别我们需要关注两组原则:组件设计原则与组件耦合选择 组件设计原则,回答哪些组件应该放在一起,包括: REP复用/发布等同选择:同一个组件中的模块因为紧密相关,应该共享版本号并被一起发布 CCP共同闭包选择:同一个组件中的内容经常需要一起变更,SRP的组件版 CRP共同复用原则:同一个组件中的内容经常需要被一起使用或引用,ISP原则的普适版… Read More »《简洁架构》读书笔记