Code reading

10
Code Reading the Open Source Perspective 要养成一个 习惯常花时间阅读别写的高品的代

Transcript of Code reading

Page 1: Code reading

Code Reading the Open Source Perspective

要养成一个习惯,经常花时间阅读别人编写的高品质的代码

Page 2: Code reading

规程

● 为什么要阅读别人的代码?

● 项目的组织

● 编译过程和制作文件

● 配置与部署

● 版本控制

● 第三方工具

● 测试

一项成功的技术,必须先要经受事实的考验,因为没有人能够欺骗大自然。 --Richard Phillips Feynman

Page 3: Code reading

理论基础

● 没有任何一个作家开始写作而没有读过任何人的作品。

● 维护

● 重构

● 利用或重用

● 审查

● hacking...

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

Page 4: Code reading

项目的组织

● 源码树常常能够反映出项目在构架和软件过程上的结构。

● 不要被庞大的源代码集合吓倒;它们一般比小型的专门项

目组织得更出色。

● Readme?Install?docs?Hacks?etc. 不要放过任何一个

可能获得信息的文件。

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

Page 5: Code reading

编译过程和制作文件

● 能够“阅读”项目的编译过程和阅读项目的代码同样重要。

● 依赖关系图说明各个项目组件的正确编译次序。

● 编译过程中最为错综复杂的部分是项目依赖关系的定义

与管理。

● Make, Ant, Maven,waf ......

忽视数据,实际上,是人们协调内心矛盾时采取的最简单,也最普遍的方式。 -- William James

Page 6: Code reading

配置与部署

● pom.xml and mvn● ./ear/pom.xml● groupId,artifactId,version.● engine-setup● host-deploy● /etc/$package-name/config-file

自然界的法则只不过是上帝的数学思维而已。 -- Euclid

Page 7: Code reading

version control commit Great git git blame git log git log -p git diff

So SVN,CVS,hg .......

文档就如同性爱:当它很完美时,那真是太美妙;当它不和谐时,也比没有要好一些。 --Dick Brandon

Page 8: Code reading

工具

● 正则表达式

● find● grep● eclipse + a lot of plugins● Debug

给我们工具,我们就会完成工作。 -- Winston Churchill

Page 9: Code reading

测试

● 首先将它用起来!

● Junit● CI● Used it!

物理学家能够将他们的错误掩盖起来,但设计师只能建议他们的客户种植一些葡萄藤(来弥补设计上的缺陷)。 --Frank Lloyd Wright

Page 10: Code reading

参考资料

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

Thanks = lambda: "any question?"