我们说一下如何去学习一些开源的软件的源代码,如何面对解读上千个源码文件,几十万行源代码

整体的步骤如下

1.从文档来初步构建项目认知

首先说通过看文档,可以迅速的掌握这个软件整体结构,有哪些功能特性,设计的关键技术,实现原理等,有一个整体的了解,然后看其源代码就可以了

然后最好是看开源软件官网上的文档,不要看一些搜索翻译后的中文文档

也是避免中文文档的落后以及一些错漏导致的问题

英文不好则可以先去读一下中文文档,然后对照英文原版过一遍

example:

看一下Kafka,首先是Quick Start文档,可以教你们快速的指导搭建,对这个项目有一个感性的认识,方便了解

然后是Introduction,会说明其中的基本概念和名词的介绍文档,在Kafka中,有着Topic Producer Consumer Partition这些概念

还会有个单独的Basic Concepts 来讲述基本的概念,这个文档来说明专有的一些概念

然后就是对应的Features这种文档来介绍功能和特性

最后就是,项目的EcoSystem,说明一些典型的使用场景,特定的常见适合与哪些其他系统来配合使用,如果系统不是很特别或者冷门的话,可以在EcoSystem找到类型的场景

这样,就可以对这个项目有个整体的认知了,比如:

1.项目干什么的

2.能解决什么问题

3.适合在什么地方使用

4.哪些功能

5.如何使用

然后就是了解其实现的原理

一般的知名的开源你项目背后都是有论文的支持,如果可以看完这篇论文并理解透彻了,实现原理就基本明白了

Kafka的论文基于了

The Log: What every software engineer should know about real-time data’s unifying abstraction

中文版在此 <中文版>

然后对于源码

源码是一种网状的结构,关系错综复杂忙不建议直接泛泛的去读源码,很容易迷失在代码的网中

所以最好是带着问题的答案去读源码

比如:

RocketMQ消息如何写到文件中的

Kafka的Coordinator如何维护消费位置的

类似这种细粒度的问题,然后对于问题,去查看文档,比如在Kafka的文档中,DESIGN和IMPLEMENTATION两个章节,就介绍了Kafka的实现原理和细节

或者是非核心的在Improvement Proposal中查看,描述新功能的文档,开源项目需要增加一个新的功能或者特性的时候,就会创建一个Improvement Proposal,一般标题都是xIP-新功能特性,x是指的项目的首字母

Kafka的IP文档就是KIP

了解了如何实现了,那么就带这个答案去读源码,增加对项目的理解

发表评论

邮箱地址不会被公开。 必填项已用*标注