源码阅读技巧

作者: 橙小张 | 来源:发表于2018-07-12 18:37 被阅读2次

    内容参考极客时间从零开始学架构,在看了华仔的那篇文章后,总结了一些东西,主要从几个方面来提炼下:
    1. 提取文章观点
    2. 写一点自己的思考

    文章内容

    拒绝拿来主义

    一些错误的观点

    • 只有参与开源项目开发的人才能真正理解
    • 我的项目没有使用Redis,不用的话很难深入理解
    • 数据结构和算法很重要,我只需要研究数据结构和算法就够了
    • 逐行阅读源码

    观点一:不管什么身份,都可以从开源项目中学到更多

    • 例如学习Redis的网络模型,不一定要成为Redis开发,只需要具备一定的网络基础,再阅读Redis源码,就可以学习到Redis单进程的Reactor模型

    观点二:数据结构和算法在开源项目中不是特别重要

    观点三:采取自顶向下的学习方法,源码应该是最后一步

    • 掌握基本的功能,原理,关键设计之后再去看源码
    • 看源码的目的是为了学习代码的写作方式,以及关键技术的实现

    举例:Redis的RDB持久化模式是怎么保存内存快照的,在Linux中是fork一下子进程

    自顶向下学习

    • 安装
      • 安装查看依赖,猜想假设
      • 例如Redis只有一个bin目录,那么要去猜想一些问题
        • Redis没有conf是怎么配置的
        • Redis日志怎么保存
      • 查看系统提供的工具
    • 运行
      • 系统具备哪些能力
      • 系统会如何运行
      • 尝试去了解熟悉命令行工具,例如参数配置项作用和原理,去试错
    • 原理研究
      • 如何才算是系统性呢?
        • 关键特性的基本实现原理(这个项目的高性能是如何做到的)
        • 例如Memcache是如何实现的?
          • Libevent
        • 要去掌握memcache的网络模型,需要
          • 多路复用
          • Linux Epoll
          • Reactor模型
          • 多线程
      • 优缺点对比
    • 原理研究的手段
      • 通读项目的设计文档:例如Kafka的设计文档
      • 阅读网上已有的分析文档(尽可能多阅读几篇)
      • DEMO验证:通过写DEMO去进行验证
    • 测试
      • 基于一些案例做测试
      • 去试错,调整参数
    • 源码研究
      • 源码研究的目的是学习原理背后的具体编码实现,通过学习技巧来提升我们的技术能力
      • 不要阅读全部的源码

    思考实战

    最近在做一个发送邮件的功能,本来打算自己写一个工具类,看了一个开源项目,比较满足自己的需求,就看了文档,去使用了,项目代码量不大,就去看了下代码,到此总结一下。

    首先是看了文档,知道怎么使用

    下载了源码,去跑了一些Test,有了一个直观的感受

    了解一些关键的类,从两方面来看
    1. 工具本身封装的一些类,例如涉及Excel的一些类,如Workbook,Sheet,Row等
    2. 工具自己的一些关键类

    因为本身项目代码比较少,我也了解Excel的一些类,以及自己最初想做的思路就是Annotation来做,看了项目之后感觉主体思路还是比较接近的,看起来也比较容易,主要是以下步骤:

    • clone源码
    • 使用Test,Debug跟着进去,找到核心的方法以及自己想去学习的一些方法:
      • 例如怎么处理Annotation的
      • 对于Class的处理,使用反射还是自省
      • 主要流程是什么
    • 然后自己去写了Test去熟悉
    • 前提是这个项目代码量不太大…

    总结

    本篇文章主要就是想发下华仔的文章,自己以前学习大型项目的源码其实很少坚持下来,代码真是太多了,例如Dubbo,ES,Netty,Spring等一些项目的代码即使是开发者也不一定能全部掌握,所以也有一些经验总结,就是并不要求全,先去看文档,然后去用,最后再去看代码,看代码不要看全部,而是重点关注几点:
    1. 编程手法
    2. 异常处理
    3. 核心功能实现
    在学习的过程中一定要思维活跃:
    1. 去猜
    2. 去试错
    3. 去写QuickStart

    相关文章

      网友评论

        本文标题:源码阅读技巧

        本文链接:https://www.haomeiwen.com/subject/pgwrpftx.html