* [首页](/) * [前言](./preface) * [第一章:介绍](./ch1.md) * [第二章:复杂性的本质](./ch2.md) * [第三章:工作代码是不够的(战略与战术编程)](./ch3.md) * [第四章:模块应该是深的](./ch4.md) * [第五章:信息隐藏(和泄露)](./ch5.md) * [第六章:通用模块更深入](./ch6.md) * [第七章: 不同的层,不同的抽象](./ch7.md) * [第八章: 降低复杂性](./ch8.md) * [第九章: 在一起更好还是分开更好?](./ch9.md) * [第十章: 定义不存在的错误](./ch10.md) * [第十一章: 设计它两次](./ch11.md) * [第十二章: 为什么写注释?四个理由](./ch12.md) * [第十三章: 注释应该描述代码中不明显的内容](./ch13.md) * [第十四章: 选择的名字](./ch14.md) * [第十五章: 先写注释](./ch15.md) * [第十六章: 修改现有的代码](./ch16.md) * [第十七章: 一致性](./ch17.md) * [第十八章: 代码应该是显而易见的](./ch18.md) * [第十九章: 软件发展趋势](./ch19.md) * [第二十章: 设计性能](./ch20.md) * [第二十一章: 结论](./ch21.md) * [总结](./summary.md)