最近在看源码时候,有些心得,整理下。算法
1 先把源码下载下来,本身构建,必须执行单元测试,看单元测试成功率以及消耗时间。从这里能够看出项目的测试质量。数据结构
2 先把源码结构以及构建脚本,readme等基本的结构看完,了解构建和使用过程。这步重在看工程结构和使用基本文档。数据结构和算法
3 经过JavaDoc把全部的包看完,了解每一个包的做用,包的数量看出源码复杂度和做者的结构规划,同时也能够看到文档的质量。找到最核心的几个包,里面的类所有看完,大概了解作什么,核心的类在包中通常有标注,核心的类表明着项目的灵魂。看能不能抽取些领域的概念,用哪些类(概念)支持了这个项目。从而猜想哪些概念支持了这个项目运行和解决领域问题的基础。ide
4 尝试第三步抽取的类画出类图,也就是项目的静态结构。这一步通常耗时间而且带了不少猜想性的探索,尝试理解大概轮廓。项目同时使用了哪些数据结构和算法?工具
5 写一个使用demo,debug进去看核心流程,这一步最费时间,由于须要理解大量细节和流程,debug过程当中看到经历的多少个类,理解项目动态的运行。重在了解设计思路。源码分析
6 看网上解析和已有源码分析文章,和本身理解同样吗,或者新的理解。这个阶段能够重点分析代码质量,好比抽象度,扩展度,设计细节,DesigniteJava之类工具分析OO Metris等数据。单元测试
7 理解项目为了解决一个问题,创造了哪些概念和过程。给项目提出五个优势和五个缺点,从源码,设计,设计,实现,工程,竞品等角度。测试
上面7步只是了解项目的基础,更深刻的须要深刻看源码,理解源码。更重要的理解项目抽象了哪些东西,项目灵魂,项目设计思路,项目的核心概念。debug