依赖:借来的代码
这一章讲三件事: 加一个依赖到底签下了什么;版本号的每一位数字各承诺什么; 以及「相依性地狱」长什么样、怎么不进去。 读完你会拿一份「加依赖之前该问的问题清单」和一套防冲突的配置纪律。
1. 这一章讲什么
写代码免不了用别人写好的代码:数据库驱动、应用框架、机器学习库——原书说得直白,这些东西你不该从头自己写1。但「不重复造轮子」的另一半很少被教:每引入一个依赖,你也引入了它的所有风险——不兼容的变化、循环依赖、版本冲突和缺乏控制2。
本章在全书链条里的位置:第 03 章讲你的代码怎么在生产环境活下来;这一章讲你借来的代码——它们同样要活,而且坏起来会连累你。本章的版本号纪律在第 10 章(API 演进)和第 07 章(软件包发布)都会再次出现。
2. 顶层全景
「把这个库加进来吧」
│
├─ 它的版本号承诺什么? SemVer:主.次.补丁
├─ 它还拖着谁? 传递依赖(1 个 → 101 个)
│ └─ 两条 地狱之路: 钻石依赖(两个版本择一) / 循环依赖(先有鸡还是先有蛋)
└─ 怎么防? 九问 → 隔离(复制/供应商/遮蔽)
→ 显式声明 + 版本指定 + 依赖清单 + 范围最小化
图说:左半边解释风险从哪来,右半边给防御动作;主走查在 3.3。