• 如何学习和阅读代码


    如何阅读代码

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

    代码的构成部分

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

    阅读代码的方法

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

  • 相关阅读:
    有哪些pdf转word的免费软件?这个办法值得一试
    Spring Boot快速入门:构建简单的Web应用
    【Kingbase FlySync】界面化管控平台:2.配置数据库同步之KES>KES
    LVS+Haproxy
    【微信小程序】使用uni-app——开发首页搜索框导航栏(可同时兼容APP、H5、小程序)
    Tamll商城管理系统订单模块(2)
    【云原生 · Kubernetes】部署kube-apiserver集群
    01 创建前端项目【小白入门SpringBoot + Vue3】
    Python实现双X轴双Y轴绘图
    定时保存正在编辑的文档原理阐述及通过windowsApi实现
  • 原文地址:https://blog.csdn.net/qq_43806430/article/details/125515727