第13章 复杂度:尽可能简单,但别简单过了头
区分本质、可选与偶然复杂度,并在接口与实现之间分配认知预算。
学习目标
- 能解释 第13章 复杂度:尽可能简单,但别简单过了头 如何回答“比较五种编辑器风格对新手任务、专家扩展和维护的负担”
- 能沿 复杂度盘点 → 来源分类 → 接口分配 → 方案比较 → 删减验证 重建输入、状态、输出和失败边界
- 能使用 total_complexity = essential + optional + accidental 比较正常输入、恰好边界与单点故障
- 能量化概念数、状态数与例外路径,并删除一项偶然复杂度
为什么要从这个问题开始
区分本质、可选与偶然复杂度,并在接口与实现之间分配认知预算。 复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。 在本课程中,Unix 风格只是一组待验证假设;当延迟、安全、事务一致性、团队能力或平台约束改变时,允许用证据拒绝它。
直觉、对象与计算合同
贯穿场景是:比较五种编辑器风格对新手任务、专家扩展和维护的负担。先固定输入版本、资源预算和成功条件,再观察 本质复杂度、偶然复杂度 与 软件尺寸;若中途改了数据或口径,结果作废。
这个式子用于公开变量关系,不冒充经验常数。简化若删除必要能力或把复杂度推给用户,只是转移而非降低。 需要特别防范的失败是:用统一框架消除表面差异,却引入更多配置、概念和隐藏控制流。
↡第13章 复杂度:尽可能简单,但别简单过了头在第13章 复杂度:尽可能简单,但别简单过了头中对应复杂度盘点的可复核状态。·
↡本质复杂度在第13章 复杂度:尽可能简单,但别简单过了头中对应来源分类的可复核状态。·
↡可选复杂度在第13章 复杂度:尽可能简单,但别简单过了头中对应接口分配的可复核状态。·
↡偶然复杂度在第13章 复杂度:尽可能简单,但别简单过了头中对应方案比较的可复核状态。·
↡认知负担在第13章 复杂度:尽可能简单,但别简单过了头中对应删减验证的可复核状态。·
↡软件尺寸在第13章 复杂度:尽可能简单,但别简单过了头中对应复杂度盘点的可复核状态。正式目录节点:解释与验证
下面逐项保留作者送印版目录坐标。每一项都放回 第13章 复杂度:尽可能简单,但别简单过了头 的机制链解释,并在页面实验组件与章末复核清单中再次出现;标题出现本身不计作覆盖。
13. Complexity
“13. Complexity”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查本质复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
Speaking of Complexity
“Speaking of Complexity”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查可选复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
The Three Sources of Complexity
“The Three Sources of Complexity”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查偶然复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
Tradeoffs between Interface and Implementation Complexity
“Tradeoffs between Interface and Implementation Complexity”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查认知负担:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
Essential, Optional, and Accidental Complexity
“Essential, Optional, and Accidental Complexity”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查软件尺寸:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
Mapping Complexity
“Mapping Complexity”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查本质复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
When Simplicity Is Not Enough
“When Simplicity Is Not Enough”提出本单元必须回答的判定问题,结论需要允许被反证。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查可选复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
A Tale of Five Editors
“A Tale of Five Editors”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查偶然复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
ed
“ed”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查认知负担:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
vi
“vi”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查软件尺寸:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
Sam
“Sam”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查本质复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
Emacs
“Emacs”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查可选复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
Wily
“Wily”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查偶然复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
The Right Size for an Editor
“The Right Size for an Editor”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查认知负担:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
Identifying the Complexity Problems
“Identifying the Complexity Problems”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查软件尺寸:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
Compromise Doesn't Work
“Compromise Doesn't Work”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查本质复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
Is Emacs an Argument against the Unix Tradition?
“Is Emacs an Argument against the Unix Tradition?”提出本单元必须回答的判定问题,结论需要允许被反证。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查可选复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
The Right Size of Software
“The Right Size of Software”把本单元的总机制细化为一个可定位的主题坐标。 在“复杂度地图记录用户必须理解的概念、实现内部状态和工具链附带负担;编辑器案例说明功能多少不是唯一尺度,交互模型与扩展边界同样决定系统大小。”这条因果链中,本节点重点检查偶然复杂度:先写预期,再改变一个直接条件,并用简化若删除必要能力或把复杂度推给用户,只是转移而非降低。作为停止或继续的边界。
三视图实验:先预测,再操作
1. 组合拓扑
沿 复杂度盘点 → 来源分类 → 接口分配 → 方案比较 → 删减验证 定位职责和失败传播,只允许改变一个直接条件。
taoup-chapter-13-complexity · 组合拓扑
第13章 复杂度:尽可能简单,但别简单过了头
比较五种编辑器风格对新手任务、专家扩展和维护的负担
选择验证情境
选择工程动作
正常路径和责任链一致,可以进入下一节点,但仍须保存可重放记录。
职责、接口与失败传播
13. Complexity
常见误区
术语
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 第13章 复杂度:尽可能简单,但别简单过了头
本质复杂度的检查入口;必须能回到输入、状态与失败证据。
- 本质复杂度
可选复杂度的检查入口;必须能回到输入、状态与失败证据。
- 可选复杂度
偶然复杂度的检查入口;必须能回到输入、状态与失败证据。
- 偶然复杂度
认知负担的检查入口;必须能回到输入、状态与失败证据。
- 认知负担
软件尺寸的检查入口;必须能回到输入、状态与失败证据。
- 软件尺寸
本质复杂度的检查入口;必须能回到输入、状态与失败证据。
练习与答案
练习
- 问题 1:目录证据复核。 选择三个相邻目录节点,说明它们在 第13章 复杂度:尽可能简单,但别简单过了头 中的因果关系,并指出各自的实验与练习证据。
- 问题 2:故障诊断。 在“比较五种编辑器风格对新手任务、专家扩展和维护的负担”中注入“用统一框架消除表面差异,却引入更多配置、概念和隐藏控制流”,第一处应该拒绝结果的位置在哪里?
- 问题 3:方案判断。 什么情况下应该拒绝本章首选的 Unix 风格方案?
本章小结
第13章 复杂度:尽可能简单,但别简单过了头 的核心不是记住目录名,而是用 复杂度盘点、来源分类、接口分配、方案比较、删减验证 把 本质复杂度、可选复杂度、偶然复杂度、认知负担、软件尺寸 连成一条可反驳、可重放、可撤回的证据链。最终验收是:能量化概念数、状态数与例外路径,并删除一项偶然复杂度。