Vesper@之一

关于源码浅读😎

👉 引言:读源码是一种思维逻辑能力或者叫思维方式和方法论,而不是一种背诵能力,这是一个废物关于源码阅读的一些想法(吐槽),但或许能让你共鸣,不妨往下看看~

1. 程序员应不应该具备读源码的能力?

相信对于这一点,很多人跟我一样的答案,【应该】 在我从业期间遇到了形形色色的人,大部分自己具备此种能力,却不“自知”,这一类人有相当多。 怎么如此说呢?且听我鬼扯~

其实很多人接手的项目不是从0-1的,就算你入职一家公司之后,接到新的需求,也大概率不是从0-1去开发的。 那么你势必需要去阅读你这个岗位【前任】的代码,这何尝不是在阅读源码呢?

那这样看其实程序员都应该具备此种能力,那我为什么还要来谈论这个呢?

因为,现在非常多的码农都不“自知”,之所以不“自知”其实和如今程序员这一行的面试有关系。 但请相信我,不全是你的问题!看我怎么继续鬼辩~ 我说【不全是你的问题】基于如下假设或现实

基于以上,我们继续聊

::: warning 注意 我这里并不是在抨击八股取士,八股有相当的意义,因为它的确能够快速弥补一些前端基础的缺失。 但八股不应该被你死记硬背,死记硬背的确有效,但并不代表这是健康的。 :::

2. 现在的面试真的是想考察你读源码的能力吗?

3. 读源码能力是什么?有高低之分吗?

先抛个观点: 【笔者认为,阅读源码的能力有清晰和模糊的区别,没有高低之分,这取决于你是否总结过自己的一套源码阅读方法,因为其实方法有很多,条条大路通罗马,但是阅读量和经验上却有多寡的区别,从而拉开对比之时的高低差别】

因为是一篇偏入门的交流学习,对照论证,我先献丑,抛出自己的阅读方法,以其抛砖引玉。


  1. 首先你要有想要弄清楚的部分(我并不推荐因为面试去阅读,那会败掉你的兴趣和求知欲,如果是面试,我推荐你去掌握核心原理部分,大都可以从官网了解到)
  2. 把想要了解的源码版本repo拉到本地
  3. 阅读repo的contribution(因为基本都会在这里告诉你如何跑起来项目和调试)
  4. 用官方的测试用例或者自己写,在你想要理解的地方打上breakpoint
  5. 开始debug,记录下来call stack和scope(流程其实只需要关注调用栈,但是个别框架还有一些标志位变量或者其他逻辑变量放在了全局,所以scope中的全局作用域,你不妨留意一下,记录可以使用drawio,excalidraw等画图工具,甚至你可以截图或拍照)
  6. 到repo里索引源码部分,根据call stack和scope的记录来读(这里就是真正开始阅读源码了)
  7. 记录流程外你感兴趣的其他部分(一些非你这次关注的逻辑之外,你感兴趣的点)

以上就是我平时阅读的方法了,非常期望你能和我分享你的一些阅读经验~


🖥️写在最后:

阅读源码就像是读书,沿着各个源码作者的编码思路进行探索的过程,一万个读者就有一万个哈姆雷特。