我的框架、源码学习方法

内容纲要

背景、动机

工作中总是需要接触到各种各样的框架、技术;尤其是在需要扛起大旗,作为一个项目主导人员的时候,为了做好技术选型,我们需要学习许许多多的技术;闭门造车不可取是共识,能力提升最快的方法之一就是阅读源码:领悟别人的精髓,化为己用。通过源码阅读,学习框架能够:

  • 提高编码能力
  • 锻炼架构思维
  • 掌握更多的技术方向

方法

在变化万千的软件行业,死记硬背能起到的作用非常小,也很低效。所以需要一个适合自己的学习方法。

误区

我最开始学习源码的时候,总感觉无从下手。于是傻乎乎的把整个源码下载下来,从排列的第一个文件、文件夹开始一点点的读代码……结果是😭臣妾做不到啊!,不管怎么认真,始终是坚持不到读完代码……

启发

我上学的时候,曾经学过画画,画好一副画,是有很多方法的,但其核心总是差不多的:

  1. 确定构图
    • 画的范围(边界)在哪
    • 画里面要有哪些元素
    • 元素的主次是什么
      file
  2. 打形
    • 描出整个画面构图、物体位置关系、形状大小
      file
  3. 粗描
    • 大致描出各个物体的具体形象
      file
  4. 精描
    • 精细打磨明暗面、光影效果等
      file

总结

经过对学习画画的思考、总结,我得出一个目前来说还算比较适合我的学习方法:

  1. 查看官方文档
    • 有文档
      • 事先阅读文档能够有效的加速代码理解(尤其是一些配置项之类的)
      • 如果需要锻炼源码阅读能力的同学,并且不是那么着急的话,可以先不看文档(要做好会代码读的很累的准备,因为很多变量你不知道意思,得读相关代码才能分析出来,这一步会比较耗时),留着最后验证学习效果
    • 没文档
      • 很大一部分我们接触的代码应该是没有文档,或者文档不齐全的,有能力、精力的同学希望能整理一份文档(发起一个开源文档项目),为开源事业贡献一份力量👍
  2. 确定学习目标
    • 要学框架的哪些部分(功能);不是每个框架都需要从上到下完完全全的看完的(多贡献值维护的框架,即使是源码贡献者也未必会掌握全部代码)
  3. 确定源码结构
    • 粗略查看项目的文件结构、包构成等
  4. 深入模块实现
    1. 写使用 Demo
    2. 跟进 Demo 代码使用到的框架源码
      • 跟着主线走,不要被分散精力
      • 不要抓着一个代码死肯(尤其一些算法实现,没相关知识不一定看得懂,知道干什么的就可以了,不用太深入)
      • 主线之外的代码可以过一遍,不明白就先放着,主要是混个眼熟
    3. 理清 Demo 线路相关代码的生与死,如:
      • Web 类型框架核心引擎的请求 Request 和 Response 的流程
      • 事件驱动程序的启动到循环监听已经退出监听条件等
    4. 最好以自己的理解画出架构图
    5. 重复以上步骤,大致搞清目标要学的部分的基本原理
  5. 找(写)个完整的项目(有必要的话)
    • 检测各个模块的掌握情况
    • 加深记忆
    • 梳理整个系统的架构(最好以自己的理解画出架构图)

PS:我的其它源码学习文章基本会按照这个套路进行学习,并且文章中的部分源码由于篇幅太长,不会直接贴在代码中,有需要参考我的文章的同学,请务必下载一份相应(版本)的源码结合着文章看。

Tags:

发表回复

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