序章 本书导读
0.1 原则的分类. 2
0.2 介绍方式 4
0.3 编程术语在本书中的用法 6
0.4 注意事项. 8
第 1 章 前提 编程永恒的真理
1.1 编程没有银弹. 12
1.2 代码即设计书. 15
1.3 代码必然被修改 . 18
第 2 章 准则 编程的指导方针
2.1 KISS 原则 22
2.2 DRY 26
2.3 YAGNI 33
2.4 PIE. 36
2.5 SLAP 41
2.6 OCP 46
2.7 名字很重要 50
第 3 章 思想 编程的意识形态
3.1 编程理论 56
3.2 交流 60
3.3 简洁 62
3.4 灵活性. 64
3.5 效应局部化 66
3.6 重复最少化 68
3.7 逻辑与数据的一体化 .70
3.8 对称性 71
3.9 声明式表达 73
3.10 变动率 75
3.11 软件架构基本技法78
3.12 抽象 80
3.13 封装 . 82
3.14 信息隐藏 83
3.15 打包 85
3.16 关注点分离 87
3.17 充足性、完备性、原始性89
3.18 策略和实现的分离91
3.19 接口与实现的分离93
3.20 单一引用点 95
3.21 分治 98
3.22 软件架构的非功能需求.100
3.23 易变性104
3.24 互操作性.107
3.25 效率性109
3.26 可靠性111
3.27 可测试性.113
3.28 可复用性.115
3.29 七个设计原理118
3.30 简单性原理120
3.31 同构原理.121
3.32 对称原理.123
3.33 层次原理.125
3.34 线性原理.127
3.35 清晰原理.129
3.36 安全原理.131
3.37 UNIX 思想133
3.38 模块化原则135
3.39 清晰原则.136
3.40 组合原则.138
3.41 分离原则.140
3.42 简单原则.142
3.43 简约原则.144
3.44 透明性原则145
3.45 健壮性原则.147
3.46 表达性原则.149
3.47 最小意外原则150
3.48 沉默原则152
3.49 修复原则154
3.50 经济原则.156
3.51 生成原则158
3.52 优化原则159
3.53 多样性原则161
3.54 可扩展性原则162
3.55 UNIX 哲学164
3.56 小就是美.166
3.57 工作唯一169
3.58 尽早创建原型171
3.59 可移植性优先于效率 174
3.60 文本数据176
3.61 充分利用软件的杠杆效应178
3.62 活用 shell 脚本 .180
3.63 避开交互式用户接口 182
3.64 过滤器化.184
第 4 章 视角 程序员的视角
4.1 内聚度192
4.2 耦合度.199
4.3 正交性206
4.4 可逆性211
4.5 代码中的“坏味”.213
4.6 技术负债.216
第 5 章 习惯 程序员的日常
5.1 程序员的三大美德.222
5.2 童子军规则.226
5.3 性能调节的箴言 .229
5.4 无我编程235
5.5 一步一步走237
5.6 TMTOWTDI240
第 6 章 手法 程序员的工具箱
6.1 曳光弹.244
6.2 契约式设计249
6.3 防御性编程254
6.4 内部测试262
6.5 橡皮鸭调试法.264
6.6 语境 266
第 7 章 法则 编程的反模式
7.1 布鲁克斯法则280
7.2 康威定律285
7.3 破窗效应288
7.4 熵增原理291
7.5 80-10-10 原则 296
7.6 约书亚树原则.299
7.7 第二系统综合征 302
7.8 重新发明车轮.305
7.9 给牦牛剃毛309
后 记312
谢 辞315