来源书籍

架构整洁之道

软件设计与复杂性管理类

经典原理(高信息浓度 + 高稳定性)

精读第一章"设计与架构究竟是什么"确认:全书开篇即用真实公司团队规模扩张但生产力 持续下滑(每行代码变更成本8个版本内暴涨40倍)的案例,论证"软件架构的终极目标是用最小人力 成本满足构建和维护系统的需求"这一核心命题,随后用类比与实验数据(TDD 6天实验:稳扎稳打反而 更快)层层展开为什么"过度自信、延迟治理代码质量"必然导致系统退化——这是纯粹讲"为什么"的 论证而非讲某个工具"怎么用"的操作手册。信息浓度极高。稳定性方面,全书虽然援引Java/C++等语言 特性和具体框架(Web框架、数据库驱动)作为例证,但这些始终是用来讲解SOLID原则、组件聚合与 耦合、依赖方向、架构边界这些跨语言跨技术栈长期成立的设计原则的载体——"高层策略应独立于低层 实现细节"这类结论不会因为某个框架或数据库产品的迭代而过时。综合定级:高信息浓度+高稳定性= 经典原理。 **类别说明**:核对`category-checklists.md`中"系统架构类"(判定标准:"以讲解大型软件系统 整体架构设计(微服务、分层架构等,不针对单一具体框架)为主要目标的书籍",必答清单聚焦服务 拆分、跨服务通信、跨服务一致性、可观测性、熔断降级、部署发布策略)——本书主线是单一代码库 内部的组件边界、依赖方向、SOLID原则与实现细节隔离,并非围绕微服务/分布式系统的服务拆分与 跨服务治理展开,与该类别必答清单逐条对不上。检索全书章节标题与目录,也未发现契合"编程语言 类""框架类""领域建模类""数据库/存储引擎类""分布式系统类""可观测性/监控类""工程管理/团队 协作类"等其他已定义类别判定标准的主线内容。本书主题(面向对象架构设计原则)足够通用、后续 可能有同类书籍复用,但因当前处于无人值守自动化流程中,无法与用户交互确认是否新增类别,故 暂不记录类别字段,阶段五按规则跳过;待后续人工复核时,可考虑提议新增"面向对象架构设计类" 类别(必答清单草案:SRP/OCP/LSP/ISP/DIP五原则的应用边界、组件聚合与耦合的度量、依赖方向与 架构边界划分、"细节可替换"的判定标准、整洁架构的同心圆分层)。

类别清单覆盖

尚未完成类别清单核对。

全书概览

架构整洁之道

类别:软件设计与复杂性管理类

Skill 版本:v7

四象限结论:经典原理(高信息浓度 + 高稳定性)

理由:精读第一章”设计与架构究竟是什么”确认:全书开篇即用真实公司团队规模扩张但生产力 持续下滑(每行代码变更成本8个版本内暴涨40倍)的案例,论证”软件架构的终极目标是用最小人力 成本满足构建和维护系统的需求”这一核心命题,随后用类比与实验数据(TDD 6天实验:稳扎稳打反而 更快)层层展开为什么”过度自信、延迟治理代码质量”必然导致系统退化——这是纯粹讲”为什么”的 论证而非讲某个工具”怎么用”的操作手册。信息浓度极高。稳定性方面,全书虽然援引Java/C++等语言 特性和具体框架(Web框架、数据库驱动)作为例证,但这些始终是用来讲解SOLID原则、组件聚合与 耦合、依赖方向、架构边界这些跨语言跨技术栈长期成立的设计原则的载体——”高层策略应独立于低层 实现细节”这类结论不会因为某个框架或数据库产品的迭代而过时。综合定级:高信息浓度+高稳定性= 经典原理。

类别说明:核对category-checklists.md中”系统架构类”(判定标准:”以讲解大型软件系统 整体架构设计(微服务、分层架构等,不针对单一具体框架)为主要目标的书籍”,必答清单聚焦服务 拆分、跨服务通信、跨服务一致性、可观测性、熔断降级、部署发布策略)——本书主线是单一代码库 内部的组件边界、依赖方向、SOLID原则与实现细节隔离,并非围绕微服务/分布式系统的服务拆分与 跨服务治理展开,与该类别必答清单逐条对不上。检索全书章节标题与目录,也未发现契合”编程语言 类”“框架类”“领域建模类”“数据库/存储引擎类”“分布式系统类”“可观测性/监控类”“工程管理/团队 协作类”等其他已定义类别判定标准的主线内容。本书主题(面向对象架构设计原则)足够通用、后续 可能有同类书籍复用,但因当前处于无人值守自动化流程中,无法与用户交互确认是否新增类别,故 暂不记录类别字段,阶段五按规则跳过;待后续人工复核时,可考虑提议新增”面向对象架构设计类” 类别(必答清单草案:SRP/OCP/LSP/ISP/DIP五原则的应用边界、组件聚合与耦合的度量、依赖方向与 架构边界划分、”细节可替换”的判定标准、整洁架构的同心圆分层)。

章节筛选

前言/推荐序/引言/后记/附录A(架构设计考古,回顾历史与个人经历)不进入卡片生成。正文1-34章 构成全书主干,从设计目标、编程范式、SOLID原则、组件原则到架构边界与实现细节隔离,信息浓度 普遍很高,全部标记精读候选;实际处理时按浓度和跨章重叠动态过滤纯罗列性内容。

章节号 章节标题 精读/略读 状态 卡片数
01 设计与架构究竟是什么 精读 done 3
02 两个价值维度 精读 done 3
03 编程范式总览 精读 done 1
04 结构化编程 精读 done 2
05 面向对象编程 精读 done 3
06 函数式编程 精读 done 2
07 SRP:单一职责原则 精读 done 2
08 OCP:开闭原则 精读 done 2
09 LSP:里氏替换原则 精读 done 2
10 ISP:接口隔离原则 精读 done 2
11 DIP:依赖反转原则 精读 done 2
12 组件 精读 done 2
13 组件聚合 精读 done 4
14 组件耦合 精读 done 5
15 什么是软件架构 精读 done 4
16 独立性 精读 done 4
17 划分边界 精读 done 5
18 边界剖析 精读 done 2
19 策略与层次 精读 done 2
20 业务逻辑 精读 done 3
21 尖叫的软件架构 精读 done 2
22 整洁架构 精读 done 4
23 展示器和谦卑对象 精读 done 2
24 不完全边界 精读 done 2
25 层次与边界 精读 done 3
26 Main组件 精读 done 1
27 服务:宏观与微观 精读 done 3
28 测试边界 精读 done 2
29 整洁的嵌入式架构 精读 done 6
30 数据库只是实现细节 精读 done 3
31 Web是实现细节 精读 done 2
32 应用程序框架是实现细节 精读 done 2
33 案例分析:视频销售网站 精读 done 2
34 拾遗 精读 done 6

实践卡进度

序号 实践标题 实践方式 状态(pending/done) 关联章节 产出
idea-001 go-clean-arch源码深读:映射书中依赖规则与四层结构 实现深读 done 第11/20/22/26章 阅读单元对照表+包依赖方向图规划
idea-002 审计cardbox自身代码库的依赖方向是否符合依赖规则 证据验证 done 第14/17/30/34章 真实包依赖图+审计表规划
idea-003 整洁架构、六边形架构、洋葱架构:三种同源架构的横向比较 横向学习 done 第22/34章 五维度对照表规划

待关联术语

术语名 出现章节 一句话语境

引用文献

标题 类型 出现章节 一句话语境

资金安全问题案例

问题标题 问题卡 解决方案卡(如有) 出现章节 一句话说明

章节与卡片

01 设计与架构究竟是什么

  1. 设计架构同体 普通读书笔记卡
  2. 设计与架构本质上没有区别,只是同一连续体的不同层级 普通读书笔记卡
  3. 软件架构的终极目标是用最小人力成本满足系统全生命周期需求 普通读书笔记卡
  4. 过度自信是乱麻系统的根源,要跑得快先要跑得稳 普通读书笔记卡

02 两个价值维度

  1. 双重价值 普通读书笔记卡
  2. 软件的两个价值维度:行为价值与架构价值 普通读书笔记卡
  3. 用逻辑论证证明架构价值高于行为价值的反直觉结论 普通读书笔记卡
  4. 艾森豪威尔矩阵下,为好架构持续斗争是研发人员的职责 普通读书笔记卡

03 编程范式总览

  1. 范式是约束 普通读书笔记卡
  2. 三大编程范式的共性:各自移除一种编程能力,而非增加 结构图卡

04 结构化编程

  1. 测试只能证伪 普通读书笔记卡
  2. 结构化编程诞生于可推导性追求,goto有害的真正原因 普通读书笔记卡
  3. 结构化编程真正的价值是创造可证伪的程序单元 普通读书笔记卡

05 面向对象编程

  1. 多态反转依赖 普通读书笔记卡
  2. 封装与继承并非面向对象编程独有的能力 普通读书笔记卡
  3. 多态本质是函数指针的安全化,催生了插件式架构 普通读书笔记卡
  4. 依赖反转:面向对象编程对架构师的核心本质 结构图卡

06 函数式编程

  1. 不可变削弱并发 普通读书笔记卡
  2. 不可变性是并发问题的根治方案,与可变性隔离策略 普通读书笔记卡
  3. 事件溯源:用存储换不可变性,只存事务不存状态 普通读书笔记卡

07 SRP:单一职责原则

  1. 职责来自角色 普通读书笔记卡
  2. SRP的真正含义是"只对一类行为者负责",而非"只做一件事" 普通读书笔记卡
  3. 拆分不同行为者依赖的代码,及SRP在组件与架构层面的映射 普通读书笔记卡

08 OCP:开闭原则

  1. 扩展优先修改 普通读书笔记卡
  2. OCP在架构层面的核心机制:不想被修改影响的组件应被依赖 结构图卡
  3. 接口的信息隐藏作用:防止传递性依赖,而非只是反转方向 普通读书笔记卡

09 LSP:里氏替换原则

  1. 替换保护契约 普通读书笔记卡
  2. LSP的可替换性定义与正方形/长方形问题 普通读书笔记卡
  3. LSP扩展到架构层面:用配置驱动隔离不可替换的接口实现 普通读书笔记卡

10 ISP:接口隔离原则

  1. 接口按用户切 普通读书笔记卡
  2. ISP的源码级成因:接口隔离消除不必要的重新编译部署 普通读书笔记卡
  3. ISP在架构层面:依赖不需要的东西在任何层次都有害 普通读书笔记卡

11 DIP:依赖反转原则

  1. 依赖指向抽象 普通读书笔记卡
  2. DIP真正该关注的是易变具体实现,及稳定抽象层的四条编码守则 普通读书笔记卡
  3. 抽象工厂模式与依赖反转名字的由来:控制流与源码依赖方向相反 结构图卡

12 组件

  1. 组件部署单元 普通读书笔记卡
  2. 组件是软件的最小独立部署单元 普通读书笔记卡
  3. 插件式架构是"程序规模墨菲定律"与摩尔定律较量的历史产物 普通读书笔记卡

13 组件聚合

  1. 聚合原则拉扯 普通读书笔记卡
  2. REP复用/发布等同原则:软件复用的最小粒度应等同发布粒度 普通读书笔记卡
  3. CCP共同闭包原则是SRP在组件层面的再度阐述 普通读书笔记卡
  4. CRP共同复用原则的真正重点是"不该放在一起"的类 普通读书笔记卡
  5. 组件聚合张力图:三原则的竞争关系与随项目成熟度的动态平衡 结构图卡

14 组件耦合

  1. 依赖环阻塞发布 普通读书笔记卡
  2. ADP无依赖环原则:从"一觉醒来综合征"到组件化发布 结构图卡
  3. 循环依赖的连锁代价与两种打破方式 普通读书笔记卡
  4. SDP稳定依赖原则:稳定性的量化定义与Fan-in/Fan-out指标 普通读书笔记卡
  5. SAP稳定抽象原则:稳定性应与抽象化程度一致,等于组件层面的DIP 普通读书笔记卡
  6. 主序列与I/A图:用痛苦区、无用区和D指标量化组件设计质量 结构图卡

15 什么是软件架构

  1. 架构保留选择 普通读书笔记卡
  2. 软件架构师应是一线程序员,架构工作的实质是规划组件切分与通信 普通读书笔记卡
  3. 架构对开发、部署、运行、维护四阶段的影响程度并不均等 普通读书笔记卡
  4. 保持可选项:策略与细节脱钩,让实现决策尽可能推迟 普通读书笔记卡
  5. 设备无关性与物理地址无关性:两个历史案例印证策略细节脱钩的真实收益 普通读书笔记卡

16 独立性

  1. 独立性服务用例 普通读书笔记卡
  2. 良好架构须支持用例、运行、开发、部署四大目标,及保留可选项的必要性 普通读书笔记卡
  3. 按层水平解耦与按用例垂直切分的矩阵式解耦模式 结构图卡
  4. 表面重复与真正重复:不该为了消除相似而过早耦合独立演化的代码 普通读书笔记卡
  5. 三种解耦粒度,与为何"默认微服务优先"是代价高昂的选择 普通读书笔记卡

17 划分边界

  1. 边界越早越值钱 普通读书笔记卡
  2. 边界的作用是推迟不成熟决策,最耗人力的是过早决策导致的耦合 普通读书笔记卡
  3. P公司与W公司的悲伤故事:草率架构决策的真实代价 普通读书笔记卡
  4. FitNesse案例:通过划边界层层推迟数据库决策的真实历程 普通读书笔记卡
  5. 数据库是业务逻辑间接使用的工具,边界线应画在依赖箭头指向业务逻辑之处 结构图卡
  6. I/O无关紧要原则与插件式架构:构建变更防火墙 普通读书笔记卡

18 边界剖析

  1. 边界跨越靠插件 普通读书笔记卡
  2. 跨边界调用的两种依赖方向:低层调高层对齐,高层调低层需反转 结构图卡
  3. 四种边界物理形式的通信成本呈阶梯递增 普通读书笔记卡

19 策略与层次

  1. 高层策略少变 普通读书笔记卡
  2. 层次按"距离输入输出的远近"定义,高层策略变更应更少更重大 普通读书笔记卡
  3. 加密程序案例:源码依赖方向应与数据流向脱钩,让低层成为高层的插件 结构图卡

20 业务逻辑

  1. 业务规则分层 普通读书笔记卡
  2. 业务实体:把关键业务逻辑与关键业务数据绑定为独立模块 普通读书笔记卡
  3. 用例:只在自动化系统内才有意义,控制业务实体交互是DIP的又一应用 普通读书笔记卡
  4. 请求/响应模型:为何用例输入输出必须独立于框架与业务实体 普通读书笔记卡

21 尖叫的软件架构

  1. 架构应喊业务 普通读书笔记卡
  2. 尖叫的架构:目录结构该"喊"出用例,而非框架名字 普通读书笔记卡
  3. 框架是工具而非信条,围绕用例的架构才能脱离框架测试 普通读书笔记卡

22 整洁架构

  1. 依赖只向内 普通读书笔记卡
  2. 整洁架构:综合多种架构思想的五个共同特征与依赖关系规则 结构图卡
  3. 整洁架构四层的具体职责:业务实体、用例、接口适配器、框架驱动 普通读书笔记卡
  4. 跨越架构边界:用"输出端"接口反转控制流与源码依赖的方向 结构图卡
  5. 一个基于Web/数据库的Java系统案例:完整走通整洁架构数据流 结构图卡

23 展示器和谦卑对象

  1. 谦卑对象隔离难测 普通读书笔记卡
  2. 谦卑对象模式:展示器可测试,与视图谦卑的分工 普通读书笔记卡
  3. 谦卑对象模式在数据库网关、ORM与服务边界的应用 普通读书笔记卡

24 不完全边界

  1. 不完全边界 普通读书笔记卡
  2. 不完全边界"省掉最后一步"策略,及FitNesse的成功兼反例 普通读书笔记卡
  3. 单向边界(策略模式)与门户模式:两种更简化的不完全边界 普通读书笔记卡

25 层次与边界

  1. 边界不止三层 普通读书笔记卡
  2. Hunt The Wumpus案例:从三组件模型到多API边界,GameRules成为最高层策略 结构图卡
  3. 数据流会随系统复杂化持续分裂,高低层策略的拆分要视场景而定 普通读书笔记卡
  4. 架构边界可存在于任何地方,决策不是一次性的而是持续观察演进的成本权衡 普通读书笔记卡

26 Main组件

  1. Main最细节 普通读书笔记卡
  2. Main组件是系统最细节化的部分,也可被视为一种插件 普通读书笔记卡

27 服务:宏观与微观

  1. 服务不是架构 普通读书笔记卡
  2. 服务本身不等于架构:解耦合与独立部署的两个流行谬论 普通读书笔记卡
  3. 运送猫咪的难题:横跨型变更让按功能切分的微服务全体强耦合 普通读书笔记卡
  4. 服务边界不是架构边界,SOLID组件设计才能真正化解横跨型变更 结构图卡

28 测试边界

  1. 测试也是组件 普通读书笔记卡
  2. 测试是系统架构最外圈的组件,脆弱测试问题会让系统变死板 普通读书笔记卡
  3. 测试专用API解决结构性耦合,让产品代码与测试代码独立演进 普通读书笔记卡

29 整洁的嵌入式架构

  1. 嵌入式也要分层 普通读书笔记卡
  2. 固件的重新定义:由依赖关系与变更难度界定,而非存储位置 普通读书笔记卡
  3. "程序适用测试"的局限:只关注让代码工作,会让代码通过运行测试却毫无长久价值 普通读书笔记卡
  4. 硬件抽象层(HAL):让硬件成为实现细节,可以无限分层 普通读书笔记卡
  5. 处理器是实现细节:用标准stdint.h取代厂商专有扩展,并靠PAL隔离寄存器访问 普通读书笔记卡
  6. 操作系统抽象层(OSAL)让软件脱离目标操作系统,迁移RTOS的痛苦对比 普通读书笔记卡
  7. 面向接口的可替代性,与DRY条件编译反例:用HAL接口取代满天飞的#ifdef 普通读书笔记卡

30 数据库只是实现细节

  1. 数据库是细节 普通读书笔记卡
  2. 数据库只是实现细节:区分重要的数据模型与不重要的数据库工具 普通读书笔记卡
  3. 数据库与文件系统是应对磁盘慢速限制的产物,假设磁盘不存在会怎样 普通读书笔记卡
  4. 一段轶事:市场需求驱动关系型数据库引入的真实故事 普通读书笔记卡

31 Web是实现细节

  1. Web是输入输出 普通读书笔记卡
  2. 无尽的钟摆:Web只是计算资源集中/分散振荡史的一瞬 普通读书笔记卡
  3. GUI与Web只是实现细节,靠用例的完整输入输出数据结构实现设备无关抽象 普通读书笔记卡

32 应用程序框架是实现细节

  1. 框架须可替换 普通读书笔记卡
  2. 框架作者与用户的"单向婚姻",及四项具体风险 普通读书笔记卡
  3. 不要嫁给框架:用代理类隔离依赖,并对不可避免的依赖保持主动选择 普通读书笔记卡

33 案例分析:视频销售网站

  1. 用例先于技术 普通读书笔记卡
  2. 视频网站案例:四个角色驱动的用例分析与抽象用例 普通读书笔记卡
  3. 组件架构中控制流方向与依赖方向的分离,及灵活部署选项 结构图卡

34 拾遗

  1. 组件按业务封装 普通读书笔记卡
  2. 按层封装与按功能封装的对比:水平分层无法体现业务领域信息 普通读书笔记卡
  3. 端口和适配器:区分领域与基础设施代码,并用独特领域语言命名 普通读书笔记卡
  4. 按组件封装:Simon Brown的组件定义与Bob大叔的组件定义之别 普通读书笔记卡
  5. 宽松分层架构的陷阱:漂亮的依赖图很容易被"自律"以外的手段突破 普通读书笔记卡
  6. public滥用会让四种架构风格实质等同,用访问修饰符让编译器强制执行架构规则 普通读书笔记卡
  7. 其他解耦合模式:模块系统、多代码树拆分与Périphérique反模式 普通读书笔记卡

相关主题

暂无公开主题。