写得不太好的代码有各式各样的难题,会给阅读者产生不太好的阅读文章感受,而且假如代码写得不足好,文本文档和代码不一致,注释和代码不一致,那麼对维护保养工作人员而言,了解代码和进到团队全是有艰难的。假如代码写得不足好,就必须拓展作用,改动Bug时需必须花销的時间也较长。
自表述代码是一种选用贴近于自然语言理解的方法撰写代码的认为。
代码易读性、可扩展性、可检测性是关系代码品质的关键参照指标值。这书从每个视角来剖析造成伪劣代码的缘故,并从代码的取名、注释、设计风格、构造、构架等层面下手,对提升设计方案能力、了解开发工具、掌握计算机语言、提高英语口语能力等诸多方面明确提出了实际的改进提议。
目录
- 第1章 劣质代码带来的劣质体验 1
- 1.1 代码的可读性问题 1
- 1.1.1 命名类问题 2
- 1.1.2 注释类问题 6
- 1.1.3 风格类问题 8
- 1.1.4 结构类问题 11
- 1.1.5 架构类问题 18
- 1.2 代码的可测试性问题 22
- 1.3 代码的可维护性问题 22
- 1.3.1 需求变更难以应对 23
- 1.3.2 纠缠不清的Bug 23
- 第2章 劣质代码是怎么产生的 25
- 2.1 理论知识匮乏 25
- 2.2 对编程语言不熟悉 29
- 2.3 对开发环境不熟悉 31
- 2.4 对设计方法不了解 32
- 2.5 编程习惯不佳 32
- 2.6 英语能力不足 35
- 2.7 管理人员误导 36
- 第3章 自表达代码 39
- 第4章 理论知识的补充 41
- 4.1 面向对象的基础知识 41
- 4.1.1 封装 41
- 4.1.2 继承 42
- 4.1.3 多态 44
- 4.2 设计的基本原则 45
- 4.2.1 单一职责原则 45
- 4.2.2 开放封闭原则 46
- 4.2.3 里氏代换原则 48
- 4.2.4 接口分离原则 48
- 4.2.5 依赖倒置原则 49
- 4.2.6 迪米特法则 50
- 4.2.7 不要重复你自己 51
- 4.3 圈复杂度 52
- 第5章 编程环境的熟悉 53
- 5.1 保存动作与自动格式化 53
- 5.2 快速修复 58
- 5.2.1 缺少类 59
- 5.2.2 缺少方法 60
- 5.2.3 缺少变量 61
- 5.2.4 类型不匹配 62
- 5.3 重构 63
- 5.3.1 改名 64
- 5.3.2 改变方法签名 68
- 5.3.3 提取方法 69
- 5.3.4 移动 73
- 5.3.5 引入参数对象 76
- 5.3.6 引入接口 77
- 5.3.7 向上提取 78
- 5.3.8 提取常量 81
- 5.3.9 局部变量变为域变量 82
- 5.3.10 引入工厂 82
- 5.4 自动完成 83
- 5.5 大纲 84
- 5.6 Eclipse快捷键 86
- 第6章 编程语言的学习 88
- 6.1 注解 88
- 6.2 异常 94
- 6.3 反射 97
- 6.4 泛型 100
- 第7章 设计方法的学习 101
- 7.1 设计模式 101
- 7.2 依赖注入 102
- 7.3 Map的妙用 103
- 7.4 采用位掩码减少类的个数 107
- 7.5 List处理Z-Order 110
- 第8章 英文能力的提升 113
- 8.1 词性 113
- 8.2 时态 115
- 8.3 语法 116
- 8.4 否定词 117
- 8.5 成对词 119
- 8.6 近义词 120
- 8.7 前缀、后缀 120
- 8.8 缩写 122
- 8.9 正确用词 122
- 第9章 编程习惯的改进 124
- 9.1 命名方面的改进 124
- 9.1.1 命名的基本原则 124
- 9.1.2 包的命名 125
- 9.1.3 接口的命名 125
- 9.1.4 类的命名 125
- 9.1.5 注解的命名 126
- 9.1.6 枚举的命名 126
- 9.1.7 方法的命名 127
- 9.1.8 变量 129
- 9.1.9 常量的命名 130
- 9.1.10 相似的命名 130
- 9.2 注释方面的改进 131
- 9.2.1 JavaDoc 131
- 9.2.2 TODO、FIXME和XXX 132
- 9.2.3 其他注释 133
- 9.2.4 方法的注释 133
- 9.2.5 类的注释 133
- 9.2.6 版权声明 134
- 9.3 风格方面的改进 135
- 9.3.1 缩进与对齐 135
- 9.3.2 空格与空行 138
- 9.3.3 行长与换行 140
- 9.4 结构方面的改进 140
- 9.4.1 缩短长判定 140
- 9.4.2 缩短长分支 144
- 9.4.3 减少参数个数 148
- 9.4.4 减少嵌套的层数 150
- 9.4.5 去掉重复代码 152
- 9.4.6 分离暧昧关系 155
- 9.4.7 多维度变化 156
- 9.4.8 缩短长方法 158
- 9.4.9 正则表达式 158
- 9.4.10 自相似对象 160
- 9.4.11 同质化处理 161
- 9.5 架构方面的改进 162
- 9.5.1 MVC 162
- 9.5.2 包含关系 164
- 9.5.3 继承关系 164
- 9.5.4 包的划分 165
- 9.5.5 内部类、内部接口及内部枚举 166
- 9.5.6 匿名类 167
- 9.5.7 有限取值范围 168
- 第10章 测试代码的自表达改进 174
- 10.1 测试代码的可读性 175
- 10.2 测试代码的可维护性 179
- 10.3 测试代码的可扩展性 179
- 10.4 测试语法 180
- 第11章 Lambda表达式 182
- 11.1 filter 183
- 11.2 forEach 183
- 11.3 findAny与findFirst 184
- 11.4 sorted 184
- 11.5 uniqueElements 185
- 附录 186