转载请注明出处!
最近半年多时间一直在做新产品的预研和代码分析方面的工作。整个过程是及其富有挑战性和探索性的,回顾这半年多时间的工作和学习,对代码分析方法有一些总结和心得,隧记录下来以备遗忘。这篇文档并非最终文档,在之后的工作和学习过程中会随时补充。
开源时代的来临给程序员们带来了丰盛的大餐,网络上存在着大量的优秀产品和代码可供我们品味。但是真正当你要公关一个具体的开源软件时,会面临代码量大、文档少、没有技术支持等多方面的问题。如何能更有效、更加快速的了解一个产品的特性、实现细节?我想这是每个程序员都在关心和思考的问题。这里记录的仅仅是我在研究和学习代码过程中的体会和心得,如果需要了解更多的有关代码阅读方法方面的朋友,请阅读Diomidis Spinellis的Code Reading。
一、收集信息
代码阅读的第一步是收集可以收集的所有信息,这些信息包括如下内容:
- 项目用户文档
- 项目设计文档
- 项目FAQ
- 项目测试用列
这些信息可以从项目的主页、Wiki、Google、邮件列表、论坛,以及相关的论文和书籍中获得,并且将收集的相关信息统一管理起来。这里我推荐三个不错的知识管理软件:myBase、Moin和Google Notebook:
myBase: 这个工具可以用于收集任何数字信息,包括网页、文件、多媒体信息等,并且可以方便的按照树形结构将其分门别类
Moin:这是一个Wiki工具,主页提供一个desktop版本,可以方便的copy到U盘携带,它最大的特点是每篇文章都是单独存放的可以方便的使用版本管理工具管理起来
Google Notebook:可以方便的为每个知识点打Tag,方便检索。貌似现在Notebook已经停止开发了,团队重心放到Google Document了。
二、制定分析策略
由于开源软件的代码量往往是惊人的,很多时候又缺少相关的设计文档和资料,并且对于个人来说精力也是有限的。因此,在代码分析之前制定一套分析策略是比较重要的。分析代码之前首先要明确我们分析的最终目的是什么?
如果我们分析代码的主要目的是了解该产品的特性,则我们的分析目标应该放在如下几个方面:
- 产品适用的领域有那些?
- 相关的产品和实现有那些