学习源代码应该从哪儿入手呢?最佳的方式就是先看它的文档。通过看文档可以快速掌握这个软件整体的结构,它有哪些功能特性,它涉及到的关键技术、实现原理和它的生态系统等等。在掌握了这些之后,你对它有个整体的了解,然后再去看它的源代码,就不会再有那种盲人摸象找不到头绪的感觉了。
看文档的时候,应该选择官方文档,而不是网翻的中文文档。网翻的中文文档可能存在更新不及时、翻译不准确、疏漏等问题,不利于技术框架的学习了解。
看了文档之后,可能可以解决几个问题:
- 这个项目是干什么的?
- 能解决哪些问题?
- 适合在哪些场景使用?
- 有哪些功能?
- 如何使用?
对这些问题有一个初步的答案之后,接下来就可以去深入学习它的实现原理了。在深入学习原理之前,可以了解下该项目产生的背景。一些开源项目是某个科学家某天突发奇想到一个观点,然后进行研究,并发表出论文。在收获很多赞之后,如 Google 等公司认可其价值后,将其实现出来,从而诞生了开源项目。因此,如有相关论文、博客,可以先从理解论文和博客来理解原理会更轻松、合适。
后续,选择阅读源码的时候,也不要直接选择从 main 方法开始看起,这样很容易迷失在源代码的网状结构中。推荐阅读源码的方式是,带着问题去读源码,最好是带着问题的答案去读源码。在阅读源码的时候,先去确定自己阅读源码时要携带的问题,例如,“Kafka 的 Coordinator 是怎么维护消费位置的?”。这样能更有针对性,避免在一些不必要的细枝末节上浪费太多的时间。