如何学习开源项目源码

读源码如读书,积累的越多,越熟练,读得越快。

post thumb
学习小组
作者 yousa 发表于 2020年7月20日

IT 技术日新月异,想必每个 IT 人都会有类似的焦虑:我该学习什么?哪些知识学到就是赚到?怎样学习才能最有效提升编程能力?

阅读优秀的代码是提高编程能力万无一失的办法。诚然,提高编程能力的显著方法是写更多代码,但也需要静下心来品味优秀的代码,大侠行走江湖也需要武功秘籍,而当今优秀的开源项目代码便是程序员的武林秘籍。

优秀的开源项目浩如烟海,应该如何选择适合自己的项目呢?

选择方式有很多,比如项目使用到什么开源项目就学习该项目的源码,比如基于 Apache Dubbo 构建微服务,则可以学习 Dubbo 框架源码,理解其底层机制以及原理(比如服务治理),学以致用;阅读那些让你印象深刻或者自己可以掌握的源码,比如从一个小项目或者一个插件开始,也是不错的选择;最重要的是,大多数人时间有限但选择又太多,一定要选择适合自己的,能够融入自己的知识体系。如果你是云原生爱好者,那么阅读 Kubernetes 核心源码就是一个非常好的选择。

找到一个合适的开源项目后,但在具体实践的时候常常因为一些不正确的看法而误入歧途,中途折戟:

  • 缺乏自信,我并未参与该项目开发,因此我很难深入理解其源码
  • 数据结构和算法很重要,所以只需要研究开源项目的数据结构和算法就够了
  • “Talk is cheap, show me the code”,一头扎进源码,只见树木不见森林

这些看法要么会让人半途而废又或者徒劳无功,那该如何更高效的学习开源项目的源码呢?

简而言之,纵览全局,按需学习,由上及下,自下而上,避免一开始陷入细节。

  • 纵览全局,运筹帷幄。在开始之前需要宏观上了解要学习的项目,了解其背景、功能、业务价值等等,学习方式非常多,比如项目网站、入门教程、官方文档目录等,方便我们快速纵览全局,了解项目主要组成部分。
  • 按需学习,有所取舍。工作后时间有限精力有限,需要在纵览全局后辨别出哪三个功能是对自己最有益处的,摒弃其他模块,全力攻克对自己有价值的功能以及源码。
  • 由上及下,先理解功能、原理以及关键设计后再剖析源码。
  • 自下而上,从一个个实践问题剖析源码。
  • 拓展联系,触类旁通。深度探索(比如 5W2H),横向拓展(比如多种 pod 调度算法横向对比),纵向类比(比如 Kubernetes 与数据库概念上的异同)。

读源码如读书,积累的越多,越熟练,读得越快。

读书活动介绍

云原生是未来 10 年 IT 发展最重要的趋势,而 Kubernetes 正是云原生的基石。另一方面,《Kubernetes 源码剖析》深入浅出的讲解了 kubernetes 的架构以及核心源码,是进阶 Kubernetes 的不二之选。

云原生社区 Kubernetes 源码研习社招募志同道合的热爱学习的小伙伴,共同研读《Kubernetes 源码剖析》。

k8s

加入研习社方式

加入知识星球,扫码置顶二维码即可加入云原生社区的 Kubernetes 源码研习社

欢迎加入 云原生社区

知识星球二维码

你能收获什么?

  • 对 Kubernetes 核心源码有更深刻的理解
  • 一群热爱云原生的志同道合的朋友