内容简介
阅读代码有自己的一套技巧,能够确定何时使用哪种技术很重要。在这本书里,作者用了600多个现实的例子,向读者展示了如何分辨好坏(和坏的)代码,如何阅读,应该注意什么,如何利用这些知识来改进自己的代码。养成阅读高质量代码的习惯,可以提高写代码的能力。
阅读代码不仅是程序员的基本功,也是软件开发的基础、维护、演进、也是评审和重用过程中不可或缺的组成部分。本书首次将阅读代码作为一门独立的学科,进行了系统的论述。本书引用的代码都来自开源项目,这是所有程序员都应该珍惜的宝库。本书以代码阅读为重点,详细讨论了相关知识和技巧。他山之石、可以攻玉”通过仔细阅读和研究这本书,可以快速提高读者的代码阅读技巧和技巧,进而从现有的优秀代码中学习、算法、构架、从设计中汲取营养,提高自身的开发设计能力。
本书适合对编程基础知识有一定了解,想进一步提高自身开发能力的读者。
目录
- 第1章 导论
- 1.1 为什么以及如何阅读代码
- 1.2 如何阅读本书
- 进阶读物
- 第2章 基本编程元素
- 2.1 一个完整的程序
- 2.2 函数和全局变量
- 2.3 while循环、条件和块
- 2.4 switch语句
- 2.5 for循环
- 2.6 break和continue语句
- 2.7 字符和布尔型表达式
- 2.8 goto语句
- 2.9 小范围重构
- 2.10 do循环和整型表达式
- 2.11 再论控制结构
- 进阶读物
- 第3章 高级C数据类型
- 3.1 指针
- 3.2 结构
- 3.3 共用体
- 3.4 动态内存分配
- 3.5 typedef声明
- 进阶读物
- 第4章 C数据结构
- 4.1 向量
- 4.2 矩阵和表
- 4.3 栈
- 4.4 队列
- 4.5 映射
- 4.6 集合
- 4.7 链表
- 4.8 树
- 4.9 图
- 进阶读物
- 第5章 高级控制流程
- 5.1 递归
- 5.2 异常
- 5.3 并行处理
- 5.4 信号
- 5.5 非局部跳转
- 5.6 宏替换
- 进阶读物
- 第6章 应对大型项目
- 6.1 设计与实现技术
- 6.2 项目的组织
- 6.3 编译过程和制作文件
- 6.4 配置
- 6.5 修订控制
- 6.6 项目的专有工具
- 6.7 测试
- 进阶读物
- 第7章 编码规范和约定
- 7.1 文件的命名及组织
- 7.2 缩进
- 7.3 编排
- 7.4 命名约定
- 7.5 编程实践
- 7.6 过程规范
- 进阶读物
- 第8章 文档
- 8.1 文档的类型
- 8.2 阅读文档
- 8.3 文档存在的问题
- 8.4 其他文档来源
- 8.5 常见的开放源码文档格式
- 进阶读物
- 第9章 系统构架
- 9.1 系统的结构
- 9.2 控制模型
- 9.3 元素封装
- 9.4 构架重用
- 进阶读物
- 第10章 代码阅读工具
- 10.1 正规表达式
- 10.2 用编辑器浏览代码
- 10.3 用grep搜索代码
- 10.4 找出文件的差异
- 10.5 开发自己的工具
- 10.6 用编译器来协助代码阅读
- 10.7 代码浏览器和美化器
- 10.8 运行期间的工具
- 10.9 非软件工具
- 可用工具和进阶读物
- 第11章 一个完整的例子
- 11.1 概况
- 11.2 攻坚计划
- 11.3 代码重用
- 11.4 测试与调试
- 11.5 文档
- 11.6 观察报告
- 附录A 代码概况
- 附录B 阅读代码的格言
首先,阅读代码这个领域确实很少有书涉及到,作者试图阐述他阅读代码的一些经验,当然,这很值得我们参考,尤其是阅读开源代码的人,可能会从中学到很多开源项目的规范与设计方法,从而更好地去理解open source
另外,我觉得这本书最重要的地方在于,一,它论述了阅读代码的重要性,我们程序员常常太醉心于写代码,却忘了开源世界宝贵的源码资源,如同作家通常从其他作品中汲取营养一样,一个好的程序员也必然要从其他优秀的代码中学习编码技巧及经验;二,它试图从阅读代码的角度来阐述如何写一个程序,这个视角很新颖,虽然前面几章对于有经验的程序员来说显得有些冗余
对于那些希望从书中学到更多阅读代码技巧的人,可能会有些失望.因为看完这本书,你面对一个大系统,可能依然无从下手.
亚马逊上这本书的评价是四颗星,所以一开始还有些期待,尽管刚看了目录就觉得它不是很诱人。
后来发现亚马逊上即使给它打四五颗星的,还是说了它不少不足。
耐着性子用一个小时翻完这本书,发现亚马逊上指出的不足都非常中肯,比如没有重点、凌乱、只适合初学者等等。
这本书中有太多莫名其妙的东西,根本就只应该出现在C语言基础教程中。与我的预期相差太远。
倒是觉得,每一章节末尾的“进阶阅读”列表很不错,它差不多说明了你要阅读开源程序所需要具备的知识与能力,是一个颇详细的reading list。
非常的详细,最初我也是指望通过这本书学会读大型代码。后来发现,真正让我学会读大型代码的还是了解功能和debug。