时间: 2021-07-18 15:27:44 | 作者:whitebob | 来源: 喜蛋文章网 | 编辑: admin | 阅读: 96次
这本书的读法决定使用略读法,并尝试用公式的形式概括一下。
读过《重构》和《设计模式》之后,会发现其实有不少概念是相通的。不过Bob 大叔的语言更亲切,也更凝练,所谓大道至简。没有经过工程淬炼的程序员读起来可能会觉得不知所云,亲身经受过多个组件,各种规模系统和饱经设计变动之苦的人,才会真正感同身受。
架构=设计 (Architecture = Design)
AIM = {S:S sat (B & M)}|Min(C)
理想架构目标就是找到使用最小的人力成本(Cost)满足建构(Build) 和维护(Maintain)该系统(System)的需求的方案。
注意:这里的最小成本是一个积累量,是随时间变化的。有时候为了长期成本的降低,宁可在短期成本上增加一些投入。经验表明:
“要想跑得快,先要跑得稳”
不要过度自信,不论是在开发初期还是重构时想要推倒重来。不要做只会“跑得快”的兔子,要对自己系统负责。
满足用户需求是行为价值,满足可演进的低成本需求是架构价值。
前者是紧急的,后者是重要的。
牢记: Priv(Important)> Priv (Urgent)
抗争是必要的,当决策出现问题时,不抗争就意味着不负责任。
第二部分 编程范式
Paradigms = structural + OOP + funcational
Paradigm = Limitation
结构化限制了goto语句,OOP限制了函数指针,functional 限制了赋值语句的使用。 太深刻了,直戳本质。每一句展开来都可以大讲特讲,你大叔就是你大叔,三句话把最精髓的点都给你说完了。
当然,其实关于范式,个人认为模版这块还是可以单拿出来的,但是范式等于限制这个真理没有错。姑妄狗尾续貂:模版限制了 void *。
大叔最妙的是,每个介绍中都暗藏了伏笔,或者说上为之道,下为之器,本都是贯通一理。
介绍结构化时点到了测试和功能拆解。
介绍OOP时说到了插件和依赖反转。
介绍函数式时提到了可变性隔离。
“我们过去50年学到的东西主要是--什么不应该做。”醍醐灌顶啊!
Less is more.
第三部分 设计原则
这一部分感觉其实有些不够过瘾,刚触到痒处,但又没有挠得舒服。
SOLID = SRP + OCP + LSP + ISP + DIP
这些原则相信很多读过《重构》和《代码整洁之道》的小朋友耳熟能详。
单一权责,开闭原则,里氏替换,接口隔离,依赖反转。听起来很像大家装13时常常会挂在嘴边的词。Bob大叔最强的地方不是重复这些无聊的缩写,而是他Refine了这些定义,让它们更精确:
SRP:任何一个软件模块都应该只对某一类行为者负责。
OCP:其实这只是一个目标,重要的两个原则是“不要依赖不直接使用的模块”和“可以通过信息隐藏阻断依赖”。
LSP:反向理解LSP,“如果不可替换,就意味着需要添加复杂的应对机制”
ISP: 实质是OCP原则的具体化。“不必要的依赖的后果是不必要的编译和不必要部署”,以及存在版本依赖时的雪崩般的后果。
DIP:非常有用的概念,也是最显而易见的组织原则。大叔用了工厂模式来示范,“多使用抽象接口,尽量避免多变的具体实现类。”“尽量少在多变的具体实现类上创建衍生类”“不要Overide具体代码”“避免在起名的时候使用具体实现名称,或者可能改变的事物名称”最后一个实在是金玉良言,你有没有碰到过名字叫mysql的接口下实现了TiDB的链接甚至是mongodb链接的设计呢?
先写到这里,精彩的留到下次再写。
全站搜索