代码整洁之道 PDF

6,332 阅读10分钟

《代码整洁之道》

链接: pan.baidu.com/s/1b6e2CgZ0… 提取码: 5d2v

“阅读这本书有两种原因:第一,你是个程序员;第二,你想成为更好的程序员。很好,IT行业需要更好的程序员!”——罗伯特·C. 马丁(Robert C. Martin)

尽管糟糕的代码也能运行,但如果代码不整洁,会使整个开发团队泥足深陷,写得不好的代码每年都要耗费难以计数的时间和资源。但是,这种情况并非无法避免。

著名软件专家罗伯特·C. 马丁(Robert C. Martin) 在本书中为你呈现了革命性的视野。他携同Object Mentor公司的同事,从他们有关整洁代码的佳敏捷实践中提炼出软件技艺的价值观,以飨读者,让你成为更优秀的程序员——只要你着手研读本书。 阅读本书需要你做些什么呢?你将阅读代码——大量代码。本书会促使你思考何谓正确的代码,何谓错误的代码。更重要的是,本书将促使你重新评估自己的专业价值观,以及对自己技艺的承诺。 书中的具体内容包括: ·好代码和糟糕的代码之间的区别; ·如何编写好代码,如何将糟糕的代码转化为好代码; ·如何创建好名称、好函数、好对象和好类; ·如何格式化代码以实现其可读性的大化; ·如何在不妨碍代码逻辑的前提下充分实现错误处理; ·如何进行单元测试和测试驱动开发。


目 录

第1章 整洁代码 1

11 要有代码 2

12 糟糕的代码 2

13 混乱的代价 3

131 华丽新设计 4

132 态度 4

133 谜题 5

134 整洁代码的艺术 5

135 什么是整洁代码 6

14 思想流派 10

15 我们是作者 11

16 童子军军规 12

17 前传与原则 12

18 小结 13

19 文献 132章 有意义的命名 14

21 介绍 14

22 名副其实 15

23 避免误导 16

24 做有意义的区分 17

25 使用读得出来的名称 18

26 使用可搜索的名称 19

27 避免使用编码 20

271 匈牙利语标记法 20

272 成员前缀 21

273 接口和实现 21

28 避免思维映射 21

29 类名 22

210 方法名 22

211 别抖机灵 22

212 每个概念对应一个词 23

213 别用双关语 23

214 使用解决方案领域名称 24

215 使用源自所涉问题领域的名称 24

216 添加有意义的语境 24

217 不要添加没用的语境 26

218 最后的话 273章 函数 28

31 短小 31

32 只做一件事 32

33 每个函数一个抽象层级 33

34 switch语句 34

35 使用具有描述性的名称 35

36 函数参数 36

361 单参数函数的普遍形式 37

362 标识参数 37

363 双参数函数 38

364 三参数函数 38

365 参数对象 39

366 参数列表 39

367 动词与关键字 39

37 无副作用 40

38 分隔指令与询问 41

39 使用异常替代返回错误码 42

391 抽离try/catch代码块 42

392 错误处理就是一件事 43

393 Error.java依赖磁铁 43

310 别重复自己 44

311 结构化编程 44

312 如何写出这样的函数 45

313 小结 45

314 SetupTeardownIncluder程序 45

315 文献 484章 注释 49

41 注释不能美化糟糕的代码 50

42 用代码来阐述 51

43 好注释 51

431 法律信息 51

432 提供信息的注释 51

433 对意图的解释 52

434 阐释 53

435 警示 53

436 TODO注释 54

437 放大 55

438 公共API中的Javadoc 55

44 坏注释 55

441 喃喃自语 55

442 多余的注释 56

443 误导性注释 58

444 循规式注释 59

445 日志式注释 59

446 废话注释 60

447 可怕的废话 62

448 能用函数或变量时就别用注释 62

449 位置标记 62

4410 括号后面的注释 63

4411 归属与署名 63

4412 注释掉的代码 64

4413 HTML注释 64

4414 非本地信息 65

4415 信息过多 65

4416 不明显的联系 66

4417 函数头 66

4418 非公共代码中的Javadoc 66

4419 范例 66

45 文献 705章 格式 71

51 格式的目的 72

52 垂直格式 72

521 向报纸学习 73

522 概念间垂直方向上的区隔 73

523 垂直方向上的靠近 74

524 垂直距离 75

525 垂直顺序 79

53 横向格式 80

531 水平方向上的区隔与靠近 81

532 水平对齐 82

533 缩进 83

534 空范围 84

54 团队规则 85

55 “鲍勃大叔”的格式规则 856章 对象和数据结构 88

61 数据抽象 88

62 数据、对象的反对称性 90

63 得墨忒耳律 92

631 火车失事 92

632 混杂 93

633 隐藏结构 93

64 数据传送对象 94

65 小结 95

66 文献 967章 错误处理 97

71 使用异常而非返回码 98

72 先写try-catch-finally语句 99

73 使用未检异常 100

74 给出异常发生的环境说明 101

75 依调用者需要定义异常类 101

76 定义常规流程 103

77 别返回null值 104

78 别传递null值 105

79 小结 106

710 文献 1068章 边界 107

81 使用第三方代码 108

82 浏览和学习边界 109

83 学习log4j 110

84 学习性测试的好处不只是免费 112

85 使用尚不存在的代码 112

86 整洁的边界 113

87 文献 1149章 单元测试 115

91 TDD三定律 116

92 保持测试整洁 117

93 整洁的测试 118

931 面向特定领域的测试语言 120

932 双重标准 121

94 每个测试一个断言 123

95 F.I.R.S.T. 125

96 小结 125

97 文献 12610章 类 127

101 类的组织 128

102 类应该短小 128

1021 单一权责原则 130

1022 内聚 131

1023 保持内聚性就会得到许多短小的类 132

103 为了修改而组织 138

104 文献 14111章 系统 142

111 如何建造一个城市 143

112 将系统的构造与使用分开 143

1121 分解main 144

1122 工厂 145

1123 依赖注入 145

113 扩容 146

114 Java代理 149

115Java AOP框架 151

116 AspectJ的方面 154

117 测试驱动系统架构 154

118 优化决策 155

119 明智使用添加了可论证价值的标准 155

1110 系统需要领域特定语言 156

1111 小结 156

1112 文献 15612章 迭进 158

121 通过迭进设计达到整洁目的 158

122 简单设计规则1:运行所有测试 159

123 简单设计规则24:重构 159

124 不可重复 160

125 表达力 162

126 尽可能少的类和方法 163

127 小结 163

128 文献 16313章 并发编程 164

131 为什么要并发 165

132 挑战 166

133 并发防御原则 167

1331 单一权责原则 167

1332 推论:限制数据作用域 167

1333 推论:使用数据副本 168

1334 推论:线程应尽可能地独立 168

134 了解Java库 168

135 了解执行模型 169

1351 生产者-消费者模型 170

1352 读者-作者模型 170

1353 宴席哲学家 170

136 警惕同步方法之间的依赖 170

137 保持同步区域微小 171

138 很难编写正确的关闭代码 171

139 测试线程代码 172

1391 将伪失败看作可能的线程问题 172

1392 先使非线程代码可工作 172

1393 编写可插拔的线程代码 173

1394 编写可调整的线程代码 173

1395 运行多于处理器数量的线程 173

1396 在不同平台上运行 173

1397 装置试错代码 174

1398 硬编码 174

1399 自动化 175

1310 小结 176

1311 文献 17614章 逐步改进 177

141 Args的实现 178

142 Args:草稿 185

1421 所以我暂停了 196

1422 渐进 197

143 字符串类型参数 199

144 小结 23615章 JUnit内幕 237

151 JUnit框架 238

152 小结 25116章 重构SerialDate 252

161 首先,让它能工作 253

162 让它做对 255

163 小结 268

164 文献 26817章 味道与启发 269

171 注释 270

172 环境 271

173 函数 271

174 一般性问题 272

175 Java 288

176 名称 291

177 测试 295

178 小结 296

179 文献 296

附录A 并发编程II 297

附录B org.jfree.date.SerialDate 326

结束语 388


最后,这里为大家准备了几百本的互联网电子书,有需要的过来取吧。点击获取

本页书籍均来自网络,如有侵权,请联系我立即删除。我的邮箱:yaojianguolq@163.com