代码阅读 | PDF下载|ePub下载
类别: 计算机
作者:[美] Gayle Laakmann McDowell
出版社: 人民邮电出版社
原作名: Cracking the coding interview:150 programming questions and solutions,fifth edition
译者:李琳骁/漆犇
出版年: 2013-11
页数: 372
定价: 59.00元
装帧: 平装
ISBN: 9787115332912
出版社: 人民邮电出版社
原作名: Cracking the coding interview:150 programming questions and solutions,fifth edition
译者:李琳骁/漆犇
出版年: 2013-11
页数: 372
定价: 59.00元
装帧: 平装
ISBN: 9787115332912
内容简介 · · · · · ·
Jolt大奖素有“软件业之奥斯卡”的美称,《Jolt大奖精选丛书:代码阅读》精选自Jolt历届获奖图书,以植根于开发实践中的独到工程思想与杰出方法论为主要甄选方向。作者使用了超过600个现实的例子来向你展现如何甄别代码的好坏;如何阅读,应当注意什么,以及如何使用这些知识来改进自己的代码。《Jolt大奖精选丛书:代码阅读》在一些现实中的大型实例基础上,论述了代码阅读的策略,并向读者展示了如何将这些代码阅读和代码理解的技艺运用于实践。
作者简介 · · · · · ·
Diomidis Spinellis自1985年开始,本书作者Diomidis Spinellis在开发大量开创性的,并受到极高评价的商业和开源项目的过程中,一直在钻研、发展本书中所提及的各项技术,期间他编写和维护的代码行数超过25万行。他在英国伦敦帝国理工学院获得了软件工程方向的硕士学位及计算机科学博士学位。目前,他是希腊雅典经济与商业大学管理科学与技术系的教授。他曾撰写过多部畅销世界的计算机技术图书,包括《架构之美》、《代码质量》和《代码阅渎》等。
左飞,技术作家、译者,著有《代码揭秘》、《数字图像处理原理与实践:基于Visual C++开发》等书。他在CSDN学生大本营上开设的主页非常受欢迎,多篇关于程序设计学习的系列文章在网络上广为流传。
吴跃,国家公务员,开源软件爱好者。他在信息安全方而有丰富的实践经验。他长期同本书原作者保持密切的往来,深得Spinellis教授之意。除了本书之外,他还翻译了作者的另外—部著作《代码质量》。
目录 · · · · · ·
原书序言 xxiii
前言 xxvii
第1章 导论 1
1.1 为何以及如何阅读代码 2
1.1.1 将代码作为文献 2
1.1.2 将代码作为范例 5
1.1.3 维护 6
1.1.4 演进 6
1.1.5 重用 8
1.1.6 检查 8
1.2 如何阅读本书 9
1.2.1 排版约定 9
1.2.2 图表 11
1.2.3 练习 12
1.2.4 辅助材料 13
1.2.5 工具 13
1.2.6 提纲 13
1.2.7 关于“伟大语言”的争论 14
进阶阅读 15
第2章 基本编程元素 17
2.1 一个完整的程序 17
2.2 函数和全局变量 22
2.3 while循环、条件和块 26
2.4 switch语句 29
2.5 for循环 31
2.6 break和continue语句 34
2.7 字符和布尔表达式 36
2.8 goto语句 39
2.9 局部重构 41
2.10 do循环和整数表达式 46
2.11 再论控制结构 48
进阶阅读 55
第3章 高级c数据类型 57
3.1 指针 57
3.1.1 链式数据结构 58
3.1.2 数据结构的动态分配 58
3.1.3 引用调用 59
3.1.4 数据元素的访问 60
3.1.5 数组类型的参数和返回结果 61
3.1.6 函数指针 63
3.1.7 用做别名的指针 65
3.1.8 指针和字符串 67
3.1.9 直接内存访问 69
3.2 结构体 70
3.2.1 组合数据元素 70
3.2.2 从函数中返回多个数据元素 71
3.2.3 映射数据的组织方式 71
3.2.4 以面向对象方式编程 73
3.3 联合体 75
3.3.1 有效利用内存空间 75
3.3.2 实现多态 76
3.3.3 不同内部表征的访问 77
3.4 动态内存分配 79
3.4.1 空闲内存管理 81
3.4.2 包含动态分配数组的结构体 83
3.5 typedef声明 85
进阶阅读 87
第4章 c数据结构 89
4.1 向量 90
4.2 矩阵和表 94
4.3 栈 98
4.4 队列 100
4.5 映射 103
4.5.1 散列表 106
4.6 集合 108
4.7 链表 109
4.8 树 116
4.9 图 121
4.9.1 节点存储 122
4.9.2 边的表示 124
4.9.3 边的存储 127
4.9.4 图的属性 128
4.9.5 隐含结构 129
4.9.6 其他表示方法 129
进阶阅读 130
第5章 高级控制流程 131
5.1 递归 131
5.2 异常机制 137
5.3 并行性 141
5.3.1 硬件和软件的并行性 142
5.3.2 控制模型 143
5.3.3 线程实现 148
5.4 信号 151
5.5 非局部跳转 154
5.6 宏替换 157
进阶阅读 162
第6章 应对大型项目 163
6.1 设计和实现技术 163
6.2 项目的组织 165
6.3 编译过程与makefile文件 172
6.4 配置 179
6.5 版本控制 184
6.6 项目专用工具 191
6.7 测试 196
进阶阅读 203
第7章 编码规范和约定 205
7.1 文件的名称和组织 206
7.2 缩进 208
7.3 格式编排 210
7.4 命名约定 213
7.5 编程实践 217
7.6 过程规范 219
进阶阅读 220
第8章 文档 221
8.1 文档类型 221
8.2 阅读文档 222
8.3 文档中存在的问题 234
8.4 其他文档来源 236
8.5 常见的开源文档格式 239
进阶阅读 245
第9章 架构 247
9.1 系统结构 248
9.1.1 集中式存储库和分布式方法 248
9.1.2 数据流架构 252
9.1.3 面向对象结构 254
9.1.4 分层架构 257
9.1.5 层次 260
9.1.6 切片 261
9.2 控制模型 263
9.2.1 事件驱动系统 263
9.2.2 系统管理器 266
9.2.3 状态转移 268
9.3 元素包装 270
9.3.1 模块 270
9.3.2 命名空间 272
9.3.3 对象 276
9.3.4 泛型实现 287
9.3.5 抽象数据类型 292
9.3.6 库 292
9.3.7 进程和过滤器 296
9.3.8 组件 297
9.3.9 数据存储库 299
9.4 架构重用 301
9.4.1 框架 301
9.4.2 代码向导 302
9.4.3 设计模式 303
9.4.4 领域专有的架构 305
进阶阅读 308
第10章 代码阅读工具 311
10.1 正则表达式 312
10.2 用编辑器浏览代码 315
10.3 用grep搜索代码 317
10.4 找出文件的差异 325
10.5 开发自用工具 326
10.6 借助编译器阅读代码 329
10.7 代码浏览器与美化器 333
10.8 运行时工具 338
10.9 非软件工具 341
可用工具与进阶读物 343
第11章 完整示例 345
11.1 概况 345
11.2 攻克计划 347
11.3 代码重用 348
11.4 测试与调试 354
11.5 文档 361
11.6 观察报告 362
附录A 代码概要 363
附录B 源代码贡献者 367
附录C 代码阅读的箴言 369
参考文献 387
· · · · · ·
前言 xxvii
第1章 导论 1
1.1 为何以及如何阅读代码 2
1.1.1 将代码作为文献 2
1.1.2 将代码作为范例 5
1.1.3 维护 6
1.1.4 演进 6
1.1.5 重用 8
1.1.6 检查 8
1.2 如何阅读本书 9
1.2.1 排版约定 9
1.2.2 图表 11
1.2.3 练习 12
1.2.4 辅助材料 13
1.2.5 工具 13
1.2.6 提纲 13
1.2.7 关于“伟大语言”的争论 14
进阶阅读 15
第2章 基本编程元素 17
2.1 一个完整的程序 17
2.2 函数和全局变量 22
2.3 while循环、条件和块 26
2.4 switch语句 29
2.5 for循环 31
2.6 break和continue语句 34
2.7 字符和布尔表达式 36
2.8 goto语句 39
2.9 局部重构 41
2.10 do循环和整数表达式 46
2.11 再论控制结构 48
进阶阅读 55
第3章 高级c数据类型 57
3.1 指针 57
3.1.1 链式数据结构 58
3.1.2 数据结构的动态分配 58
3.1.3 引用调用 59
3.1.4 数据元素的访问 60
3.1.5 数组类型的参数和返回结果 61
3.1.6 函数指针 63
3.1.7 用做别名的指针 65
3.1.8 指针和字符串 67
3.1.9 直接内存访问 69
3.2 结构体 70
3.2.1 组合数据元素 70
3.2.2 从函数中返回多个数据元素 71
3.2.3 映射数据的组织方式 71
3.2.4 以面向对象方式编程 73
3.3 联合体 75
3.3.1 有效利用内存空间 75
3.3.2 实现多态 76
3.3.3 不同内部表征的访问 77
3.4 动态内存分配 79
3.4.1 空闲内存管理 81
3.4.2 包含动态分配数组的结构体 83
3.5 typedef声明 85
进阶阅读 87
第4章 c数据结构 89
4.1 向量 90
4.2 矩阵和表 94
4.3 栈 98
4.4 队列 100
4.5 映射 103
4.5.1 散列表 106
4.6 集合 108
4.7 链表 109
4.8 树 116
4.9 图 121
4.9.1 节点存储 122
4.9.2 边的表示 124
4.9.3 边的存储 127
4.9.4 图的属性 128
4.9.5 隐含结构 129
4.9.6 其他表示方法 129
进阶阅读 130
第5章 高级控制流程 131
5.1 递归 131
5.2 异常机制 137
5.3 并行性 141
5.3.1 硬件和软件的并行性 142
5.3.2 控制模型 143
5.3.3 线程实现 148
5.4 信号 151
5.5 非局部跳转 154
5.6 宏替换 157
进阶阅读 162
第6章 应对大型项目 163
6.1 设计和实现技术 163
6.2 项目的组织 165
6.3 编译过程与makefile文件 172
6.4 配置 179
6.5 版本控制 184
6.6 项目专用工具 191
6.7 测试 196
进阶阅读 203
第7章 编码规范和约定 205
7.1 文件的名称和组织 206
7.2 缩进 208
7.3 格式编排 210
7.4 命名约定 213
7.5 编程实践 217
7.6 过程规范 219
进阶阅读 220
第8章 文档 221
8.1 文档类型 221
8.2 阅读文档 222
8.3 文档中存在的问题 234
8.4 其他文档来源 236
8.5 常见的开源文档格式 239
进阶阅读 245
第9章 架构 247
9.1 系统结构 248
9.1.1 集中式存储库和分布式方法 248
9.1.2 数据流架构 252
9.1.3 面向对象结构 254
9.1.4 分层架构 257
9.1.5 层次 260
9.1.6 切片 261
9.2 控制模型 263
9.2.1 事件驱动系统 263
9.2.2 系统管理器 266
9.2.3 状态转移 268
9.3 元素包装 270
9.3.1 模块 270
9.3.2 命名空间 272
9.3.3 对象 276
9.3.4 泛型实现 287
9.3.5 抽象数据类型 292
9.3.6 库 292
9.3.7 进程和过滤器 296
9.3.8 组件 297
9.3.9 数据存储库 299
9.4 架构重用 301
9.4.1 框架 301
9.4.2 代码向导 302
9.4.3 设计模式 303
9.4.4 领域专有的架构 305
进阶阅读 308
第10章 代码阅读工具 311
10.1 正则表达式 312
10.2 用编辑器浏览代码 315
10.3 用grep搜索代码 317
10.4 找出文件的差异 325
10.5 开发自用工具 326
10.6 借助编译器阅读代码 329
10.7 代码浏览器与美化器 333
10.8 运行时工具 338
10.9 非软件工具 341
可用工具与进阶读物 343
第11章 完整示例 345
11.1 概况 345
11.2 攻克计划 347
11.3 代码重用 348
11.4 测试与调试 354
11.5 文档 361
11.6 观察报告 362
附录A 代码概要 363
附录B 源代码贡献者 367
附录C 代码阅读的箴言 369
参考文献 387
· · · · · ·
发表回复
要发表评论,您必须先登录。