对于一个有追求的程序员来讲必须读源码,固然阅读源码是一件使人头疼的事。阅读别人的代码远比本身写代码要难。Linus 是Linux的早期做者,一句影响深远的话是“Read The Fucking Source Code”(RTFSC),这句话既体现了阅读源码的重要性,也说明了阅读源码对于大牛来讲也是一件使人头疼的事。阅读源码对于中级工程师尤其重要,经过代码能够看大牛的实现途径,方法,思想,若是你源码看多了,最终你会发现一样的效果能够有多种实现方式,具体的实现方式就和本身的编码风格有关系。对于一个中级android开发者须要阅读什么源码,android系统源码?第三方开源库源码?完整项目源码?这些源码都是大牛写的,学习价值很大,那咱们应该学习哪个?首先咱们要明白咱们的目的:短期提高咱们编码技能,但愿在工做能体现出来。从这个角度来看,阅读android系统源码的价值就不是很高。因此对于一个中级工程师来讲,要把第三方开源库和完整项目做为主要对象。下面我就讲一下看第三方开源库和完整项目源码的一些方法和技巧。android
如何高效的看fuck source code,首先须要解决的是咱们用什么看,我推荐看第三方开源库使用sublime text,看完整项目用android studio。第三方开源库无须编译,直接看代码,使用sublime text代码高亮整洁,看的很爽。效果以下:git
也许你刚开始不适应,不要担忧,用不了几天你就离不开它了。那问题又来了,看代码我习惯了这种高亮风格,再也没法忍受android studio的黑白风格的代码了。不要紧,很简单,只要设置一下,android studio就能够和sublime text 达到一样的效果。先来看看设置后的效果吧。程序员
只需下载jar包,导入android studio便可。设置方式详见README文件。github
若是你是一个阅读源码的新手,那我建议你首先找一些代码量少的,本身感兴趣的来看。能够参考我以前写过的一片文章2016年最值得学习的五大开源项目(这些都是完整的项目,若是想看一些第三方开源库,能够来这里开源项目解析)数据库
如何阅读第三方开源库android-studio
选择一些当下热门、学习价值高的第三方开源库,我认为最值得学习的是Volly,开源项目解析中也有对Volly的解析。网络
首先下载源码,而后在网上找一些源码解析文章来看看,不要忘记,咱们的宗旨之一“高效”,这样就能够最快的对项目原理有一个大致的了解,再去看源码具体实现就很快了。这里很重要的一点是如何找一些有价值的学习资料,咱们最常有的就是搜索引擎,今天就主要说说如何选择搜索引擎,之后有机会再写写如何筛选有价值的学习资料。搜索引擎:Google>bing>baidu.其实我不想黑百度,由于我很想去百度,既然如今还不是一名百度工程师,就说一下事实吧。Google是把你想要的,最有价值的东西呈如今你面前,而且他作到了。Google会把符合搜索结果、点击量最大的、最有价值的东西排在首页,因此你很轻松就会找到你想要的东西(若是你上不了Google能够点这里)。bing和Google差很少,想法同样,可是和Google相比,bing搜索到的有价值结果不是不少,没有Google的理想,还有一些来着百度知道。百度呢,第一眼看到的是广告,一些内容来着百度知道,呈现的搜索结果不是按价值排序,你须要本身慢慢找。因此首推Google。架构
再你看了一些解析文章以后,理解了项目原理,对大部分类的功能有了必定的了解,再来看源码的具体实现方式。在阅读的过程当中总会遇到一些看不懂的代码,你能够先放一放,继续往下看。这样反复几遍,就会对代码的理解不断加深。我认为阅读第三方开源库主要是学习设计思想。mvc
如何阅读开源完整项目app
毋庸置疑使用android studio阅读完整项目,很高效。阅读完整项目涉及的东西比较多,项目的架构不一样,使用的第三方库不一样,这就要求须要对项目中本身不熟悉的东西进行学习,也不须要都弄懂了再去看项目,边看边学,遇到不会的就去搜资料学习,这样最快了。
第一步下载项目,在真机或虚拟机上运行,最直观的体验app的功能。而后看app的架构,mvc、mvp、mvvp,目前项目中mvvp用的比较少。而后打开build.gradle文件看看项目用了哪些网络请求库、图片加载库、其余库。若是有不熟悉的,上网找一些文章学习一下。而后就打开manifasts文件找的入口activity,顺藤摸瓜往下看。一样,不懂的地方放过。看完一遍,再进行下一步,不要期望一遍就能够搞定。这里给你们推荐一个特别值得学习的项目LookLook(Github地址:https://github.com/xinghongfe...):mvp架构,RxJava + Retrofit+okhttp,glide。项目结构清晰,代码量不是很大,学习价值高。方法基本也就这么个方法,剩下就是跟者本身的感受走。
若是你的项目看多了以后你会发现每一个项目能够分为如下几个模块:
UI(activity ,fragment)
adapter
数据实体
第三方开源库的使用,网络、图片、其余工具
一些工具类
项目配置类
自定义View
其余(数据库,activity、fragment的基类,API等)
任何事情均可以熟能生巧,在看了一些开源项目后,本身最好开发一个。看项目源码是一个很费脑子的事情,不能急于求成,我以前就有点着急,看了不少项目,高强度的进行了20多天后,精力消耗很大,掉头发很严重,大脑严重劳累过分,休息了一个星期才缓解过来。因此建议你们制定一个合理的学习时间,不要让本身强度太大。
最后的感受就是,看似难以想象的事情,只要本身静下心来,循序渐进,最后发现都不过如此嘛。小伙伴们开始 赶快开始Read The Fucking Source Code 吧。