如何学习和阅读代码

如何阅读代码

  • 软件功能。你先要知道这个软件完成的是什么样的功能,有哪些特性,哪些配置项。你先要读一遍用户手册,然后让软件跑起来,自己先用一下感受一下。
  • 相关文档。读一下相关的内部文档,Readme 也好,Release Notes 也好,Design 也好,Wiki 也好,这些文档可以让你明白整个软件的方方面面。如果你的软件没有文档,那么,你只能指望这个软件的原作者还在,而且他还乐于交流。
  • 代码的组织结构。也就是代码目录中每个目录是什么样的功能,每个文档是干什么的。如果你要读的程序是在某种标准的框架下组织的,比如:Java 的 Spring 框架,那么恭喜你,这些代码不难读了。

代码的构成部分

  • 接口抽象定义。任何代码都会有很多接口或抽象定义,其描述了代码需要处理的数据结构或者业务实体,以及它们之间的关系,理清这些关系至关重要。
  • 模块粘合层。我们的代码有很多都是用来粘合代码的,比如中间件、Promises模式、回调、代理委托、依赖注入等。它们会把本来平铺直述的代码给分裂开来,让你不容易看明白它们的关系。
  • 业务流程。这是代码运行的过程。一开始,我们不要进入细节,但需要在高层搞清楚整个业务的流程是什么样的,在这个流程中,数据是怎么被传递和处理的。一般来说,我们需要画程序流程图或者时序处理图。
  • 具体实现。了解上述三个方面的内容后,就可以开始深入细节,阅读具体实现的代码。从以下几个方面入手。
    • 代码逻辑。业务逻辑:业务的处理逻辑;控制逻辑:控制程序流转。要把这两种逻辑分开。
    • 出错处理。20%的代码是正常的逻辑,80%的代码是在处理各种错误。读代码时,可以把处理错误的代码全部删除,只留下比较干净和简单的正常逻辑的代码。
    • 数据处理。过于冗长,而且不是主要逻辑,可以不理。
    • 重要的算法。不一定是什么排序或者什么搜索算法,可能是一些其他的核心算法,比如索引表的算法,全局唯一ID的算法,信息推荐的算法,统计算法,通读算法(如Gossip)。最有技术含量的部分。
    • 底层交互。一般来说是和OS或者JVM的交互。阅读这些代码需要一定的底层技术知识。

阅读代码的方法

一般采用自顶向下,从总体到细节的“剥洋葱皮”的读法。
画图是必要的,程序流程图,调用时序图,模块组织图……
代码逻辑归一下类,排除杂音,主要逻辑才会更清楚。
debug 跟踪一下代码是了解代码在执行中发生了什么的最好方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习 Linux 内核代码需要一定的基础,包括操作系统原理、计算机体系结构、C 语言和汇编语言等。以下是学习 Linux 内核代码的路线和方法: 1. 学习操作系统原理:建议先学习操作系统原理,包括进程管理、内存管理、文件系统等知识。推荐的书籍有《操作系统概念》和《现代操作系统》等。 2. 学习计算机体系结构:了解计算机体系结构可以帮助我们理解操作系统的底层实现。推荐的书籍有《计算机组成与设计》和《深入理解计算机系统》等。 3. 学习 C 语言和汇编语言:C 语言是 Linux 内核代码的主要编程语言,而汇编语言则是了解硬件的必备语言。推荐的书籍有《C 程序设计语言》和《汇编语言》等。 4. 学习 Linux 内核代码结构:了解 Linux 内核代码的结构可以帮助我们更好地理解代码。推荐的书籍有《深入理解 Linux 内核》和《Linux 内核源代码情景分析》等。 5. 阅读 Linux 内核代码阅读 Linux 内核代码是最好的学习方法。可以从简单的代码开始,逐步扩大范围。可以使用 Git 下载 Linux 内核代码,并使用 IDE(例如 Eclipse)进行阅读。 6. 参与开源项目:可以参与一些开源项目,贡献代码并获得反馈,这可以帮助我们更好地学习 Linux 内核代码。 总之,学习 Linux 内核代码需要一定的耐心和毅力,但是对于提高技能和了解操作系统底层实现非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值