代码阅读
为什么要写这样一篇博文那?当我们在日常学习和开发中,总是要阅读各种各样的源代码,一些代码量较少的好说,通过我们的简单阅读便可以了解其逻辑架构,但是一些代码量大,类似与LinuxKernel这类的源码,我们又该从何开始那?
目前比较高效阅读源码的方式一般分为两种:
- 自上而下:(top-down):从main函数向下深入,直到最底层的代码,好处在于可以遍历完整的顶层功能路径,进而了解各个功能的整体流程;
- 自下而上:(bottom-up):与自上而下相反,先搞懂每个组件的代码和实现机制,然后向上延展,并将其组装,有助于你掌握底层的基础组件代码;
我刚刚来到一家新公司,面对体量巨大且没有详细设计文档的代码,我是如何开始一步一步熟悉的呢?
1. 在最开始,我一般不会去学习某个模块,而是会先去了解整体的架构,首先我们先去查看有没有相关的设计文档,如果有更好,没有的话,我们可以求助老员工帮忙,其次我们从代码的目录结构入手,了解各个目录是用来干什么的?然后我们要去了解层级关系,各个层级是什么,他们的边界线在哪里?以Linux为例,分为硬件层--内核层--应用层等等。
2. 简单了解了代码的整体后,我们要去了解数据走向,各个层级之间如何交互?通信的方式等等?
3. 了解了各个层级之间如何交互,我们就要去看具体的模块了,各个模块之间的交互方式,他们的业务逻辑是什么?
4. 了解了模块的业务逻辑,我们就可以开始去深入某一个模块去进行开发。
这就是我的阅读代码的方式,可能总结有点乱,希望大家可以指正,有好的方式也希望大家分享出来。