第 一部分 技 艺
第 1章 命名 3
1.1 命名的力量 3
1.2 命名其实很难 4
1.3 有意义的命名 5
1.3.1 变量名 5
1.3.2 函数名 5
1.3.3 类名 6
1.3.4 包名 7
1.3.5 模块名 7
1.4 保持一致性 7
1.4.1 每个概念一个词 8
1.4.2 使用对仗词 8
1.4.3 后置限定词 9
1.4.4 统一业务语言 10
1.4.5 统一技术语言 10
1.5 自明的代码 10
1.5.1 中间变量 11
1.5.2 设计模式语言 11
1.5.3 小心注释 12
1.6 命名工具 14
1.7 本章小结 15
第 2章 规范 16
2.1 认知成本 16
2.2 混乱的代价 17
2.3 代码规范 18
2.3.1 代码格式 18
2.3.2 空行规范 19
2.3.3 命名规范 21
2.3.4 日志规范 22
2.3.5 异常规范 25
2.4 埋点规范 28
2.5 架构规范 30
2.6 防止破窗 30
2.7 本章小结 31
第3章 函数 32
3.1 什么是函数 32
3.2 软件中的函数 33
3.3 封装判断 33
3.4 函数参数 34
3.5 短小的函数 35
3.6 职责单一 36
3.7 精简辅助代码 37
3.7.1 优化判空 37
3.7.2 优化缓存判断 38
3.7.3 优雅降级 39
3.8 组合函数模式 40
3.9 SLAP 43
3.10 函数式编程 48
3.11 本章小结 49
第4章 设计原则 51
4.1 SOLID概览 51
4.2 SRP 52
4.3 OCP 53
4.4 LSP 54
4.4.1 警惕instanceof 55
4.4.2 子类覆盖父类函数 55
4.5 ISP 57
4.6 DIP 58
4.7 DRY 61
4.8 YAGNI 61
4.9 Rule of Three 62
4.10 KISS原则 62
4.11 POLA原则 63
4.12 本章小结 63
第5章 设计模式 64
5.1 模式 64
5.2 GoF 65
5.3 拦截器模式 69
5.4 插件模式 73
5.5 管道模式 75
5.5.1 链式管道 75
5.5.2 流处理 78
5.6 本章小结 79
第6章 模型 81
6.1 什么是模型 81
6.1.1 物理模型 82
6.1.2 数学模型 82
6.1.3 概念模型 82
6.1.4 思维模型 83
6.1.5 模型不能代替现实 83
6.2 UML 84
6.3 类图 85
6.3.1 类的UML表示法 86
6.3.2 类的关联关系 87
6.3.3 类的依赖关系 92
6.3.4 类的泛化关系 93
6.3.5 接口与实现关系 94
6.4 领域模型 95
6.5 敏捷建模 96
6.6