Code Reading
the Open Source Perspective

要养成一个习惯,经常花时间阅读别人编写的高品质的代码
一项成功的技术,必须先要经受事实的考验,因为没有人能够欺骗大自然。 --Richard Phillips Feynman

规程
●
●
●
●
●
●

为什么要阅读别人的代码?
项目的组织
编译过程和制作文件
配置与部署
版本控制
第三方工具

● 测试
我很遗憾的告诉大家,就在最近,我再次 查看了我的程序( 质因子和井子游 戏),它们没有任何形式的注 释和文档。
--Donald E. Knuth

理论基础
●
●
●
●
●

没有任何一个作家开始写作而没有读过任何人的作品。
维护
重构
利用或重用
审查

● hacking...
根据第二十二条 军规,只有疯子才能获准免于飞行,但必 须由本人提出申 请,但你一旦提出申 请,恰好证明了你是一个正常人, 还是在劫难逃。第二十二条 军规还规 定,飞行员飞
满25架次就能回国,但它又 说,你必须绝对服从命令,要不就不能回国。因此上 级可以不断 给飞行员增加飞行次数,而你不得 违抗。如此反复,永无 休止

项目的组织
● 源码树常常能够反映出项目在构架和软件过程上的结构。
● 不要被庞大的源代码集合吓倒;它们一般比小型的专门项
目组织得更出色。
● Readme?Install?docs?Hacks?etc. 不要放过任何一个
可能获得信息的文件。
忽视数据,实际上,是人们协调内心矛盾时采取的最简单,也最普遍的方式。 -- William James

编译过程和制作文件
● 能够“阅读”项目的编译过程和阅读项目的代码同样重要。
● 依赖关系图说明各个项目组件的正确编译次序。
● 编译过程中最为错综复杂的部分是项目依赖关系的定义
与管理。
● Make, Ant, Maven,waf ......
自然界的法则只不过是上帝的数学思维而已。 -- Euclid

配置与部署
●
●
●
●
●
●

pom.xml and mvn
./ear/pom.xml
groupId,artifactId,version.
engine-setup
host-deploy
/etc/$package-name/config-file
文档就如同性爱:当它很完美时,那真是太美妙;当它不和谐时,也比没有要好一些。 --Dick Brandon

version control commit
Great git
git blame
git log
git log -p
git diff
So SVN,CVS,hg .......
给我们工具,我们就会完成工作。 -- Winston Churchill

工具
●
●
●
●
●

正则表达式
find
grep
eclipse + a lot of plugins
Debug
物理学家能够将他们的错误掩盖起来,但设计师只能建议他们的客户种植一些葡萄藤(来弥
补设计上的缺陷)。 --Frank Lloyd Wright

测试
●
●
●
●

首先将它用起来!
Junit
CI
Used it!
Thanks = lambda: "any question?"

参考资料
●

《代码阅读方法与实践》ISBN: 9787302080725 清华大学出版社 2004

More Related Content

PDF
Slideshare
PDF
Portfolio giorgia vernareccio
PPTX
R. Villano - The photos (en part 6)
ODP
Guerra mundial 1 1
PDF
Keynotes Corporate Techtraining Group 2014 - US version
PDF
The way of_open_source
PDF
Community governance evolution_open_infra_china_day_2018
PDF
Why said engineer_is_roadblock- lc3
Slideshare
Portfolio giorgia vernareccio
R. Villano - The photos (en part 6)
Guerra mundial 1 1
Keynotes Corporate Techtraining Group 2014 - US version
The way of_open_source
Community governance evolution_open_infra_china_day_2018
Why said engineer_is_roadblock- lc3

More from Li Jiansheng (20)

PDF
东方文化与技术社区
PPT
开发者与开源社区
PPT
GitHub 开源指南深度解读
PDF
秘方文化与Ceph项目分析
PDF
Inner source introduction
PDF
2015中国软件技术大会-开放云介绍
PDF
Why based success_opensource_project_will_fail_its_product_last
PDF
Open source culture_in_china_team
PDF
深入浅出云计算之IaaS
PDF
Hackers and painter book reading
PDF
社区翻译那点事
PDF
数据中心操作系统浅析
PDF
oVirt社区最新活跃度
PDF
Ovirt deep dive
PDF
Understand ovirt
PDF
Newbie 3 things
PDF
Docbook intr
PDF
Deep dive-oz
PDF
Python in vir
PDF
Linux anaconda
东方文化与技术社区
开发者与开源社区
GitHub 开源指南深度解读
秘方文化与Ceph项目分析
Inner source introduction
2015中国软件技术大会-开放云介绍
Why based success_opensource_project_will_fail_its_product_last
Open source culture_in_china_team
深入浅出云计算之IaaS
Hackers and painter book reading
社区翻译那点事
数据中心操作系统浅析
oVirt社区最新活跃度
Ovirt deep dive
Understand ovirt
Newbie 3 things
Docbook intr
Deep dive-oz
Python in vir
Linux anaconda
Ad

Code reading