一年赚一百万很简单,源码怎么用,源码的作用及使用方法先容

逐日英文

Just because I’m not talking, doesn’t mean I’m in a bad mood. Sometimes I just like to be quiet.

我没语言,不意味着我心情差。有时刻,我就是想平静点。

逐日掏心话

你改变不了已经发生的,以是不要浪费时间想那么多了。前进,松手,忘了它,就这么回事。

来自:xybaby | 责编:乐乐

链接:cnblogs.com/xybaby/p/10794700.html

为什么要看源码?若何看源码?妙手进阶必看

程序员小乐(ID:study_tech)第 751 次推文 图片来自 Pexels

昔日回首:【图解】6张图搞懂 TCP 为什么三次握手而不是两次握手!(正解版)

正文

由于项目的需求,最近花了较多的时间来看开源项目的代码,在本文中,简朴总结一下对为什么要看源码、若何看源码这两个问题的思索。

为什么要看源码?若何看源码?妙手进阶必看

看源码的意义

看源码只是一种方式、手段,而不是目的。我也曾经给自己制订过“阅读xxx源码”的目的,现在看起来真的很蠢,一点不smart(specific、measurable、attainable、relevant、time-bound)。

只有搞清楚了阅读代码的目的,才气有的放矢,捉住重点,高效杀青义务。

看源码的意义总结起来包罗但不限于以下几点:

一、解决问题(BUG)

只要是代码,就会有bug,只是说bug的多与少、深与浅而已。现在人人都喜欢公布、使用开源项目,差别的开源项目社区成熟度、代码质量又会有较大的差异,遇到bug就无独有偶了。

固然,遇到bug肯定是先在网上搜索是否有类似的问题,一样平常可以在google、Stack Overflow、项目的issues内里有对应的关键词搜索。若是搜不到,那么就只能看源码解决了

二、知其以是然

我在[若何学习新手艺、团队手艺选型时要注重些什么][Link 1]内里提到过,若是我们需要将一个开源项目用到自己的项目中,那么就必须领会这项项目的优缺点,并深知原理,对部门细节(尤其是项目的优势、feature)举行深入研究。

若是是成熟的开源项目,遇到问题也许能google到许多谜底;但若是是一个处于快速发展中的开源项目,多领会其架构、焦点原理,也能辅助快速定位问题。

另外,有的项目文档可能不那么厚实,但又不得不使用,那么若何以准确的姿势使用呢?也得参考源码

三、学习

看源码也是一种不错的学习方式(虽然不一定不是最佳的方式),尤其对于对照优异的开源项目,能让人大开眼界。

即使是出于学习的目的,也是有许多偏重的,好比

学习语言:代码气概、规范、惯用法、高级语法。对于某个语言的新手,找一个熟悉领域的开源项目来深入掌握这门语言,也是一个不错的注重。

学习设计:数据接口、框架、整体架构

学习理论:算法、协议。好比我之前写过的[raft协议][raft],光看论文是很死板的,而且算法理论到工程实践照样有一定的差距,这个时刻连系开源项目([mongodb][])实现往往更事半功倍。

四、革新

网络电视盒子哪个好,目前最强的电视盒子排行推荐

一样平常来说,我们刚最先仅仅是使用一个开源项目,但随着使用的深入,会发现一些自己需要的功效并没有很好的支持,向项目组提的issues也可能得不到快速的响应,这个时刻就要自己开分支,改代码,加功效了。

固然,对照好的是将自己分支对照好的新feature 给原项目提merge request,反哺开源项目,好比阿里的[Blink][]

五、借鉴

他山之石可以攻玉,若是有需要重新最先自己造轮子,那么参考一些已有的、优异的轮子肯定是有利益的。

六、副产品

这一点,不应该作为我们阅读源码的起点,然则确实能在现实中对找事情、面试有加成,算是副产品吧。

若何看源码

看源码的目的很大水平上影响了看源码的方式、需要阅读的代码的局限。好比说,若是是为了修一个线上bug,那么阅读代码的局限就紧紧围绕bug自己;而若是是为了领会某个分布式算法,那就需要按大量的、可能运行在差别节点(历程)上的代码,领会其交互原理、事情流程。

下面说一些通用的方式。

先看文档,整体掌握

一样平常来说,文档是对代码的高度凝练,一个高质量的开源一样平常会包罗tutorial、specification、API reference等documents,通过选择性的略读、精读这些文档,就能大致领会项目的整体架构、设计原则

准确的门路是通过文档去熟悉这个项目,然乎通过阅读代码去验证文档、深入细节,而不是通过直接啃源码来领会这个项目,以偏概全。

明了代码组织,文件名,类名

当需要看代码的时刻,不要找到一个文件就最先,先看看代码组织,大略看看文件名、类名,基本就能猜测到每一部门。好比redis的源码就组织得很好,基本上看文件名就可以快速定位每一个command的实现位置。

关注一个问题,从问题追踪代码

看源码的目的决议了此时此刻的关注点,不管是解决遇到的bug照样学习某个算法,都让我们聚焦到一个详细的问题,从这个详细的问题去追踪代码,忽略掉当前无需关注的细枝末节,步步深入,直达目的。

固然在解决一个问题的时刻,有可能会引发新的问题,尤其是学习的时刻,此时只需纪录新问题(放到网络篮,不要立刻发散),待之前追踪的问题解决之后,再来看新发现的问题。

解决一个issue

若是自己没有问题,那么就协助解决别人的问题,通常来说,开源项目都有许多待解决的issue,从中选择一个入手即可。

调试

只要可以,一定先让代码编译通过、跑起来,这样不管是加log、打印挪用栈照样断点调试都利便许多。尤其是对于像python这种动态类型代码,不跑起来很难知道到底在干啥。

加注释,做条记

若是某份源代码的阅读并不是一锤子买卖,日后还可能回首、重新阅读,那么就一定要做好代码注释和条记。条记主要是框架图、类图、流程图,目的是确立索引,利便日后快速回忆。

而注释就是阅读代码时的细节,重新阅读的时刻看注释(特别是函数的注释)能节约许多时间。

迎接在留言区留下你的看法,一起讨论提高。若是今天的文章让你有新的启发,学习能力的提升上有新的熟悉,迎接转发分享给更多人。

猜你还想看

阿里、腾讯、百度、华为、京东最新面试题搜集

Java中关于try、catch、finally中的细节剖析,看了都说好!

IDEA热部署之JRebel的安装与破解教程

终于明了为什么要加 final 关键字了!

本文来源于自互联网,不代表n5网立场,侵删。发布者:虚拟资源中心,转载请注明出处:https://www.n5w.com/128972.html

(0)
打赏 微信扫一扫 微信扫一扫
虚拟资源中心虚拟资源中心网络小白
上一篇 2020年6月21日 23:56
下一篇 2020年6月21日 23:56

相关推荐

联系我们

电话:

在线咨询:点击这里给我发消息

邮件:@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

公众号