时间:2019-06-24 00:00:00 来源:信盈达 作者:
对于一个有追求的程序员来说,源码可谓是必读不可。但是事实上,阅读源码却是一件令人头疼的事情,尤其是阅读别人写的代码,往往比看自己的还要犯愁。
IT界有一句影响深远的话是:Read The Fucking Source Code,这句话既体现了阅读源码的重要性,也说明了阅读源码对于程序员来说确实是一件令人头疼的事。
然而,阅读源码又是十分重要的。通过阅读别人的代码我们可以看出作者的实现途径,方法,思想,经常看优秀的源码,你也可以灵活应用不同的途径实现同一效果。
阅读源码的重要性,大家可以从前端工程师的等级分类来理解,大概可以分以下几种:
1、新手:关注任务本身,调包侠,只知道怎么用;
2、高级新手:开始进行任务相关的数据分析,数据预处理,以及参数调优;
3、胜任者:注重特征工程,总结各种算法的适用条件;
4、精通者:深入理解算法的原理,熟悉开源项目的源码;
5、专家:提出算法改进的建议,创造新的算法。
很多人说“选择大于努力”,小渡认为“认知决定选择”,不同程序员的认知层次不同,也导致了技术水平不同。
如果想要持续进步,就要学习更高层次的认知,提前关注和储备相应的内容。他山之石,可以攻玉,阅读源码最大的好处就是可以开拓思维,程序员想更好地提升自己,这篇高效阅读源码的干货可要认真阅读哦。
那么我们该如何阅读源码呢?
首先是要明确目的
比如想研究某个算法的实现,抑或想参考实现并用其他语言二次开发,这个最初的动机会帮助你持续下去,直到实现目的。
在这个过程中,你还需要学会深挖源码。当你第一次深入成熟的代码库时,你可能感觉自己不像开发人员。你可能更像是考古学家、私人调查员或圣经学者。这很好,因为你有一大堆事情需要处理。
如果你有幸能够从一开始就接触使用版本控制的代码库,那么就该庆祝一下。你可以访问丰富的元数据,这将使你理解的不仅仅是代码,还包括上下文,都会容易很多。
其次是合理的步骤
还是“先走通再细究”的思路,比如一读文档、二写demo、三熟悉使用。具体的算法源码调试呢,在自顶向下地理清代码组织关系后,可以先从main函数入手,然后打断点,搞清楚重点函数的流转过程。
这个环节中注意阅读规范十分重要,规范是新的注释。阅读单元规范,以确定什么功能和模块是被支持的以及哪些边界情况要被处理。阅读集成规范,以了解用户如何与应用程序进行交互,以及应用程序支持哪些工作流程。
最后是能坚持不懈
很多人最开始都是决心很大,并制定计划,但在阅读源码过程中,难免会出现代码看不下去,心情烦躁的情况,这个时候,更要坚持,日拱一卒,功不唐捐。
在阅读源码中,你可能会发现一些永远不会使用的函数,或者你可能会发现从未使用过的整个文件。你可能会发现在几年来没有被碰过的注释掉的代码(gitblame)。不要迟疑,不要花太多时间去思考,不要害怕去掉这些东西。
如果代码是由于某种原因出现的,会有人在代码评审中标记该代码。你的行为还会减少下一个读者的心理开销。
最后的最后,小渡再啰嗦一句,你看源码不要一直抓着细节不放。
这一点,你搞不懂,跳过,看一下段内容。先把架构搞熟。看懂其他的后,在反过来看前面的。你会恍然大悟,原来是这样设计的!实在不行,还可以多画点类图。在结合注释,英文注释看不懂,就百度翻译。没注释,就看方法名字。看不懂单词,同样的翻译。根据一个方法的名字,应该就能看出来它的作用。
很多时候你看不懂源码的原因很简单,其实就是因为你学习的知识少,比如,你经常使用的ifelse等,别人可能包装成了设计模式。本来几行代码搞定的,变成设计模式后,多了好几个类。没办法,好的架构就是容易扩展,为了高度可定制化而生的。作为程序员,你应该尽早放下那种只为完成功能的思想。
记住这些事情,当你发现自己周围一片荒芜时,不要感到不舒服。阅读源码,不要指望它是一个线性过程,并且不要期望理解全部的100%。注意重要的细节,知道如何挖掘你的问题的答案,你会发现自己能很快理解。
千里之行,始于足下,让我们追随大牛的脚步,一起奋斗吧!
转自:公众号duing
免费领取试听卡
申请已经提交
老师会马上给您安排试听课程!
申请出错了
您可以加老师QQ:914865590报名咨询!