月薪30K大佬源码阅读的经验总结,干货不容错过

在长沙待的那些年,身边所看到的大概可分为两类人,一类是不断反复的作业务逻辑,只求功能可以写出来,天天重复上下班,不想过多的去折腾;还有一类是不断的反思总结和学习,不仅停留在作的层次上,是真正的喜欢作这行,且以为很是有意思。没有什么好与坏,只是你们的追求不一样而已。但若是咱们想要去大一点的公司,或者找一份工资稍微高些的工做,后面咱们就会有不少坎要去迈,其中一个就是阅读源码,因此这期咱们主要来探讨一下阅读源码的 一些姿式。在真正踏上这条路以前,但愿咱们能明确如下几点:android

  • 没有人一上来就能够看得懂源码,咱们都是从 Hello World 开始的,因此没有什么捷径能够走,无非就是看咱们谁花的时间多,谁更愿意折腾。git

  • 你们都是上下班,为啥别人工资拿得高福利又好,而本身大小周,偶尔还须要加班通宵。一样三四年别人拿 20k,我本身却只拿了 10k。注意我说的是 20k ,以前写过一篇文章 《从3K到30K,23岁的年纪我到底经历了什么》 此次一样怕某些哥们会喷,哪有那么高?咱们心中要有美好的信念,要有不断向上的激情。github

能力提高过程当中咱们能从中得到不少东西,心里也会变强大,关键是咱们在作项目的时候,的确会要顺手不少,这就能够拿来换钱和时间,前提是咱们愿意拿时间去换。api

一.经常使用工具缓存

首先来介绍一些看源码的工具,第一个就是咱们的开发工具 Android Studio ,这里咱们以具体的示例来讲,假设如今我想看 setContentView 的源码,那么咱们能够直接跟进到源码的方法里面去:

这时若是再往里面跟发现是一个抽象类,咱们必需要找到实现类,通常来说咱们能够搜索(ctrl + F)找到其建立实例的地方:

是红色的,这个时候咱们再也无法往里面跟了(一碰到红尴尬症就犯了,肾得慌),碰到这种状况咱们能够试试全局的搜索(双击 shift)

但不少状况下咱们全局搜索也搜索不到,接下来给你们介绍第二个工具,咱们能够在线浏览源码阅读:http://androidxref.com 这里面不光有 Java 层的源代码还有 native 层的源代码

在线查看通常都是比较精确要看哪一个类的时候,并不能知足咱们快速查看的需求。我就想在 Android Studio 中看,能够不断快速的往下跟进。其实咱们在下载 sdk 的时候通常都会下载源码,只不过恰好 android.jar 包中没有这个 class 类的源码,因此咱们才找不到而已。这个时候咱们须要一个比较完整的 android.jar ,用来替换咱们 sdk 中的 android.jar 文件,关键是这个 jar 怎么来?最好的方式是本身去编译,但不少哥们可能以为本身编译成本高,那么咱们也能够去 github 上下载。https://github.com/anggrayudi/android-hidden-api 把原来的保存一份改下命名,把下载的复制进去,而后重启 Android Studio 再去看看,发现不只没有报红并且能够点击了。


到后面这些仍是没法知足咱们的需求,好比如今咱们已经把 C++ 进阶学完了,我想跟到 native 层的源码去看看,好比去看看底层的 Binder 驱动,或者去看看类的加载机制,我再送你们一个连接,里面全部的源码基本都能找到:https://pan.baidu.com/s/1tGtBt5Y1G50yI10EkVRPAw网络

再啰嗦几句,若是咱们对源码很是感兴趣,我建议你们仍是本身去编译源码,这样咱们就能够利用 Android Studio 去调试跟踪源码,屡试不爽。架构

二.前辈力量ide

文章的开头有提到,没有人一上来就能够看得懂源码,咱们都是从 Hello World 开始的,因此没有什么捷径能够走,无非就是看咱们谁花的时间多,谁更愿意折腾。别看网上有不少大牛写了不少分析源码的文章,但其实他们都是通过反复折腾,才能写出那一篇形如流水却很抽象的文章。因此咱们写了那么多分析源码的文章,录了那么多直播课程,无非就是咱们在背后花了不少时间而已。只要你愿意我能行的,你也能行。工具

固然刚一开始我并不建议你们本身去看源码,我记得本身第一次看源码的时候,点击进去是一脸蒙 B。因此刚一开始咱们须要借助前辈的力量,跟着大牛的思路去看源码,也就是你们一般所说的老司机带带我。学习

有几点须要提醒你们是,有些文章可能篇幅比较长,要有耐心不断反复的多看几遍。固然有时也没必要在一棵树上吊死,其余树上也能够多试几回。其次咱们找一些稍微靠谱一点的,阅读量多一些的文章,排版稍微好点,图文并茂的。最后,无论别人的文章写得有多好有多清晰多牛掰,始终不是咱们本身的,也有可能存在 bug 。这也是我为何建议你们看阅读量稍微高些的文章,由于有问题你们会评论提出来,会通过不少次的修正调整。咱们最好本身亲身去实践,本身作作笔记或者写写文章,把它真正变成本身的知识,这样提高的速度是很是快的,屡试不爽。

三.惯用套路

每一个人阅读源码的思路都会有些不同,姿式也会有所不一样,下面我仅表明我的的观点谈谈个人惯用套路,假如咱们想去分析 glide 这个开源库,假设如今网上的资料也无法知足咱们了:

第一步会去画 UML 时序图,相信咱们在分析 glide 源码的时候,刚开始可能连访问网络的码头都找不到。画时序图不光能防止咱们沉入茫茫大海,还能让整个加载显示流程都很是清晰,好记性不如画流程图。

第二步会去画 UML 类图,每一个第三方库在其架构设计上,都会有其值得借鉴的地方。如 retrofit 这个开源库,虽然类文件并很少,但里面的封装解耦思想,都可以在咱们实际的开发过程当中派上用场。

第三步会去抓细节,好比 Glide 怎么压缩适配图片的,缓存怎么处理的,是如何加载 gif 图片的,怎么解析视频封面的。咱们在开发过程当中遇到的不少问题,源码会给咱们不少更好的解决方案。

第四步会去参考模仿,并非建议你们去重复造轮子,好比咱们知道了 IOC 的实现原理,就能完美的解决 mvp 中多 prsenter 的状况;清楚了 RxPermission 的实现方式咱们就能很轻松的写出相似 RxPay 和 RxShare 等等。

第五步会去反思现有的架构设计,咱们在写项目的时候,每每因为时间的缘由,只是考虑了怎么实现,能实现能按时上线就好。随着业务的不断修改增长,可能已经没有了高蛋白低脂肪。固然随着经验的增加考虑的也会多一些,但仍然须要不断的反思和学习。

四.为所欲为

当咱们阅读了大量的源码和第三方开源库后,咱们就能打通任督二脉,学习的速度会愈来愈快。当同事遇到一些棘手的 bug ,咱们能从源码的角度去分析解决;一些难以实现的需求,咱们也能很快的找到解决方案。这时咱们要么是在大公司镀金,要么是在小公司作负责人,是真正的喜欢工做、学习和折腾。

原创做者:红橙Darren(曾辉)
原文连接:https://www.jianshu.com/p/8012d5d38b01

相关文章
相关标签/搜索