如何阅读项目源代码

如何阅读项目源代码(github)

Github工程项目过大?难以阅读怎么办,本文就根据自己阅读代码的经验,总结一下如何阅读源代码的经验。

借鉴博客

看他人的源码分析是最简单也是最直接的项目经验获取方式,一篇好的源码分析博客,必定是脉络清晰的,一般包括几个部分:

UML类图 核心架构分析 关键代码分析
有助于梳理项目 有助于了解项目概况 有助于面试装逼
  • 好的项目类与类之间的关系清晰明了,反应在类图上就是类图结构清晰了。
  • 核心架构分析的重用性,就不用多说了。看懂了,对自己从0开始码项目,是很具优势的哦。
  • 关键代码分析是很重要,像三级缓存啦,网络数据传输啦(retrofit),这些项目代码目的性强,设及数据库,内存,网络,看完之后不禁拜服,感觉人生就该写此代码,但公司对这种底层服务要么封装很好,要么用的是开源库,很少能让你写这些东西,不过做做技术积累,或者面试官装逼还是极好的。

利用工具git

好了,本人默认各位看官阅读的代码使用git工具进行管理。
咳咳,在开始之前,首先介绍一下工具git,git是项目版本管理工具,看本文之前,已经默认大家都了解git了,如果不了解,可以看些入门教程,本人强力推荐廖雪峰老师的git教程。

无git,不开心

如果是“来路不明”的代码,很可能没有用到git管理自己的项目,这种代码只能自求多福了,一般没有什么特别好的阅读思路。
——————————————————————————————————
1. 代码短(1000行左右),硬读没问题。
2. 代码长(超过10000行),只能自求多福了。推荐工具:source insight
3. 代码阅读常用手段:全局搜索;定位核心代码;
忽略项目中使用的开源库代码;最好能自己制作类图,或者流程图,便于理清思路。
——————————————————————————————————
这种项目,助顺风。

git,终于等到你

这里以github上的开源项目为例,毕竟使用的人最多吧。本文主要以开源项目philm为例,大神膜拜啊!!
看看界面。
如何阅读项目源代码_第1张图片
点击图上的绿色图标(clone or download)
这里必须用git clone命令下载项目,不能直接下载zip文件,这样就不带git信息。

git clone https://github.com/chrisbanes/philm.git

之后呢,利用git log查看一下,作者有多少条commit。一般commit越大,代表代码量越大。

git log | wc -l

上面的代码可以计算出本项目有多少commit。

接下来呢?
之后能先看看有多少commit,一般优秀的开源项目,commit内包含作者的编程意图,比如该commit是实现什么功能,修复什么bug。philm的commit页面如下图所示哦:
如何阅读项目源代码_第2张图片

此外,点击release可以知道该项目有多少版本,
如何阅读项目源代码_第3张图片

好了,我们这次对项目有了大概的了解,可以知道该项目庞大,想在短期内看完似乎不太可能,而且master主分支的最新代码包含功能齐全,但一般为了学习项目,太多的功能就意味着要花费过多的时间在细枝末节上,从长远看不利于学习。

此时呢?git就派上用场了,一般我们会喜欢先看看作者第一条commit提交了什么代码。我们可以新建一个first-commit分支,该分支只包含第一条commit的代码,为了新建分支还需要知道commit id。
为了方便的查看log可以使用以下命令将log日志打印至txt文本。

git log > ../log.txt

接下来,查看commit id
如何阅读项目源代码_第4张图片

看看第一条commit id是a2917109f68db4c9bc976a8826fcc26923cc2b34
新建分支的命令到此就可以写出来了<><>

git checkout -b <branch-name> <commit-id>
git checkout -b first-commit a2917109f68db4c9bc976a8826fcc26923cc2b34

这时候代码可只有简单的一些文件咯。

此时你发现代码可能无法编译,这是由于作者才刚开发,可能并没有编译,那接下来怎么做呢??

  • 可以查看commit信息,看看作者在哪条commit发布了可编译的代码。
    或者,利用github上的release上,作者第一个版本发布在哪条commit。

如何阅读项目源代码_第5张图片

看上图发现——第 一个版本的commit是f8a44d4。接下来发生什么我们都清楚了吧,git checkout -b一下吧。

又或者比如说这个philm项目,最新代码用到了dagger,但dagger是个学习成本高的开源库,虽然很牛逼。我们也可以切换一个没有dagger的分支。
如何阅读项目源代码_第6张图片

看看,id号为6593d67e6f1d2a4bb00103f922f0cc41f41c2b10就没有dagger哦,世界终于清净了。

好了,终于写完了,喜欢的点个赞吧。

你可能感兴趣的:(android)