你好,我是猿java。
随着互联网的快速发展,技术更迭的速度也是超乎想象,也许花大力气掌握的技能几年就过时了。但是有一些东西却是历久弥新,比如:架构思想,设计思维,掌握了这些精髓,可以帮助你快速适应技术更迭。今天就推荐一本经典巨作《Clean Architecture》by Robert C. Martin。
本文从书籍简介,内部归纳,个人思考 对《架构整洁之道》进行了解读。
书籍简介 {#书籍简介}
Clean Architecture 原版出自 Robert C. Martin,号称 Bob叔叔。Robert C. Marti 博客 ,
下面给出了书籍 英文版和中文版的封面图。
全书 共6大部分,34章,大概324页。
本书脉络图 {#本书脉络图}
内容归纳 {#内容归纳}
软件系统的价值 {#软件系统的价值}
架构是软件系统的一部分,所以要明白架构的价值,首先要明确软件系统的价值。软件系统的价值有两方面,行为价值和架构价值。
行为价值:包括需求的实现,以及可用性保障(功能性 bug、性能、稳定性)等等;
架构价值: 就是让我们的软件能够灵活,简单的支持行为价值;
所以,实际工作中很多时候是在行为价值和架构价值之间的权衡。
软件架构的目标 {#软件架构的目标}
软件架构的终极目标是:用最小的人力成本来满足构建和维护该系统的需求。
架构是一个很宽泛的概念,小到一行代码的设计,大到公司集团的战略设计,很多程序员视乎总喜欢把架构等同于系统架构,认为需要设计一个足够大,
参与人数足够多的系统才算得上架构,殊不知真正的架构其实是从自己写的每一行代码开始。
编程范式 {#编程范式}
- 结构化编程
- 面向对象编程
- 函数式编程
设计原则 {#设计原则}
- 单一职责原则(Single responsibility principle, SRP)
- 开放封闭原则(Open--closed principle, OCP)
- Liskov 替换原则(Liskov substitution principle, LSP)
- 接口隔离原则(Interface segregation principle, ISP)
- 依赖倒置原则(Dependency inversion principle, DIP)
更多关于 SOLID原则详解 ,有兴趣的可以前往阅读
架构基本方针 {#架构基本方针}
架构工作有两个方针:
- 尽可能长时间地保留尽可能多的可选项
- 低层次解耦方式能解决的,不要用高层次解耦方式
组件的拆分 {#组件的拆分}
组件拆分需要在两个维度进行:按层次拆分、按变更原因拆分
组件依赖处理 {#组件依赖处理}
下面摘取了作者整洁架构原图,依赖顺序是从外层指向内层(从低层次指向高层次),通过图可以看出越具体的策略处于越低的层级,比如外部接口,越抽象的的封装处于越高层级,比如:业务实体,持久层,因此可以做到
下游数据库载体的变更对外层是无感的。
适合人群 {#适合人群}
初级程序员,中高级程序员 5颗星
强烈推荐阅读...
个人思考 {#个人思考}
很多人 5年成了技术专家,真的是他们天赋异禀吗?
有,但是数量有限,更多的是他们知道如何更好的站在巨人的肩膀上。
如何站在巨人的肩膀上?
阅读经典图书
读书获益,这是我们从幼儿园就在干的事情,因此推荐读一些国外经典的计算机图书或者国内的翻译版本,以及圈内略有名气的技术人出版的图书。
知识付费
目前国内知识付费的生态已经很不错了,推荐购买一些合适自身情况的系列课程(文字或者视频),原因有三:
- 课程一般是作者长期摸索出来的经验,更体系化和垂直化
- 课程选择的范围多,更能挑选出自己喜欢的风格,加快消化速度
- 适合吸收他人工作经验,缩短自己摸索时间
多和牛人互动
古有「听君一席话,胜读十年书」之说。的确,和有经验的人交谈可以醍醐灌顶,如沐春风。牛人往往对业务或者技术有着独特的见解,和他们互动可以更好的开拓视野。