deavilness 发表于 2004-3-13 16:14:56

Code Reading(连载)

各位老大,linuxsir.com 不能发贴,突然说我没有激活,只好把东西发到这里。如果造成大家不便,警请原谅
===============================================
Code Reading: The Open Source Perspective
By Diomidis Spinellis

Publisher : Addison Wesley
Pub Date : May 30, 2003
ISBN : 0-201-79940-5
Pages : 528


如果你是一个程序员,那么你需要阅读此书。


如果有一天,你需要为一个有 34,000 行代码的软件添加新的特性,从哪里着手呢?P333

如何去把握和化简一段难以理解的代码呢?P39

如果要理清一个复杂编译过程的思路,从哪里开始呢?P167

同时做五件事情的代码,如何去领会呢?P132


你需要阅读代码,是因为可能要修复、检查或者改进它。你需要阅读代码,是因为作为一个工程师,要掌握它的每一步细节,以此来检查这个系统。你需要阅读代码,也有可能是为了寻找可重用的材料。

阅读代码需要一系列的技巧和能力。这些技巧和能力,让你知道在一个关键时刻应该使用何种技术。在这本书中,Diomidis Spinellis 使用了超过 600 个实际中的例子,向读者展示识别代码好坏的技巧:应该如何去读、应该寻找什么,以及如何使用这些知识去改善你自己的代码。

显而易见:如果有阅读优秀代码的习惯,你将会编写出更好的代码。

deavilness 发表于 2004-3-13 16:15:34

Code Reading 目录

版权信息
高效软件开发系列
前言

补充材料
致谢

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. 生成目标代码的过程和 Makefile
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. 致谢
附录 C. 源代码目录(光盘)
附录 D. 代码许可证
附录 D.1. ACE
附录 D.2. Apache
附录 D.3. ArgoUML
附录 D.4. DemoGL
附录 D.5. hsqldb
附录 D.6. NetBSD
附录 D.7. OpenCL
附录 D.8. Perl
附录 D.9. qtchat
附录 D.10. socket
附录 D.11. vcf
附录 D.12. X Window 系统

附录 E. 阅读代码的格言
Chapter 1: 简介
Chapter 2: 基本编程要素
Chapter 3: C 语言的高级数据类型
Chapter 4: C 语言数据结构
Chapter 5: 高级流程控制
Chapter 6: 把握大型项目
Chapter 7: 编码标准和习惯
Chapter 8: 文档
Chapter 9: 体系结构
Chapter 10: 源代码阅读工具
Chapter 11: 一个完整的实例

参考书目
引言
版本记录
获取 CD-ROM

deavilness 发表于 2004-3-13 21:13:28

第一章. 简介

第一章. 简介

最近回顾了我的两个程序,求因数和tic-tac-toe游戏,它们没有任何形式的注释和文档。我对此感到抱歉。

—Donald E. Knuth

软件源代码,是交流一个程序运作过程,和按照执行方式存储知识的最好形式。你可以编译代码生成可执行程序,你可以通过阅读它来理解程序如何工作,你可以修改代码来改变程序的功能。大部分的编程课程和课本,重点都是教导人们重头开始编写程序。可是,一个软件系统成果的 40% 到 70%,都是第一次编码完成以后扩展完成的。这些工作成果包括阅读、理解和修改最初的代码。另外,遗留的代码不断积累,软件的复用越来越重要,软件行业居高不下的人员流动率,open-source 开发的成果重要性的提高,以及协作开发过程(包括外包、代码走查和极限编程),这些都使得阅读源代码成为当今软件工程师基本的技能。此外,阅读实际的、有良好书写风格的源代码,可以给予你构建和编写非凡系统的洞察力。这一种能力,是无法从编写“玩具”程序中学习到的。程序写出来是为了让别人阅读的——无论是否为此目的编写,它们都需要被人所阅读。尽管 Robert Glass 说,阅读代码识是一种“假唱假教的行为”[ Gla00 ],但是它不应该如此。

你可以从本书中学习阅读源代码的技巧,有些代码是从一些重要的 open-source 项目里抽取出来的。我们将采用 liberal 定义语言来完成所有项目的细节:源代码(和注释)、文档、可执行程序、知识库、设计图表和配置脚本。掌握了此书的内容,你将:


[*]能阅读并理解非凡软件的源代码
[*]意识到许多重要的软件开发概念
[*]知道如何探索一大块代码
[*]拥有阅读大多数重要的高级和低级编程语言的能力
[*]对一个错综复杂的软件项目进行评价


虽然此书以一些基本的程序结构作为开端,但假设了读者已经熟悉 C、C++ 或者 Java,并且能够用简单的工具去检查本书所提供的代码。除此以外,尽管我们不一定要公开我们所讨论的系统和应用,但是这样做,会加强你对现有材料的理解

接下来,本长将会讨论不同的原因,而导致阅读代码所采用相应的策略。我们还会给出一个主要的“程序指南”。Happy (code) reading!
页: [1]
查看完整版本: Code Reading(连载)