美文网首页Java互联网科技
如何去阅读并学习一些优秀的开源框架的源码?

如何去阅读并学习一些优秀的开源框架的源码?

作者: 晴栀吖 | 来源:发表于2019-08-21 21:33 被阅读2次

在软件开发中遇到问题的时候,我倾向于在不需要阅读源码的情况下解决问题,我会优先去查官方文档、FAQ、google或stackoverflow等网站,去看下有没有前人已经遇到过同类问题。阅读源码来解决问题,算是杀手锏。当然,还有另一种需求,就是希望通过阅读源码了解软件的设计细节,来达到学习的目的,例如,通过阅读Dubbo的源码,我可以了解一个RPC框架的设计细节。

前提

阅读源码之前要做一定的准备工作。

首先,确保自己掌握了相关的基础知识,例如,如果你要阅读Linux内核源码,要掌握C语言的语法、操作系统的基本概念和原理,如果你要阅读Spring的源码,要掌握Java语言基础、Maven的使用、一些设计模式等等;

第二,要学会使用这个软件或框架,了解这个软件或框架的使用场景,有什么功能,同类竞品有哪些,在学习使用软件或框架的过程中,最重要的参考资料是官方文档,一款优质的软件或框架,官方文档一般包括三块:快速开始,即一些demo;参考文档,最详细的文档,包括概念、特性的解读;FAQ:对于使用者来说常见的问题的解答;

第三,初步了解代码的整体组织结构,每个文件夹是做什么用的。

调试环境

调试环境非常重要,有了调试环境,就可以根据需要进行断点,对阅读源码非常有帮助。至于说如何搭建调试环境,不同的情况有不同的处理办法,例如MAT的源码,我是先将它的核心逻辑剥离出来,然后自己用单元测试进行调试;对于Dubbo源码,我则是写了一个Dubbo服务提供者、一个Dubbo服务消费者,以及安装了ZK之后才搭建起来的;对于Spring最简单了,利用Spring Boot启动一个hello word的demo就可以。

场景阅读

在做完上述准备工作后,我会按照使用功能或场景来阅读源码,例如,在阅读MAT(内存分析工具)的源码的时候,我是按照以下几个步骤来阅读:文件解析、索引创建、类直方图查询、支配树查询、线程视图查询等等;在阅读Spring源码的时候,我会按照Spring容器的启动、IoC的工作过程、AOP的工作过程、静态属性的引入等功能来阅读;在阅读Dubbo源码的时候,我会按照服务发布、服务订阅、服务调用三个主要场景进行源码阅读。按照功能或场景阅读,可以让我们从整体上对代码有所理解,然后就可以进入自己关注的一些细节了,例如:在MAT中,索引文件是如何创建的,在Dubbo中,请求的超时机制和心跳机制是如何实现的。

总结

阅读源码的过程中,我总结出了一些需要注意的点:

  1. 自顶向下阅读,先把握整体的、大的流程,然后再根据需要切入到对应的分支

  2. 忽略一些细节,例如参数的检查、错误的处理、数据形式的转换和存储

  3. 尽量准备好调试环境

  4. 要关注核心的业务逻辑或算法

  5. 最好能在阅读的过程中输出一些笔记或文档,例如模块划分图、函数的流程图、针对某个业务场景,在几个模块之间的时序图等等,这些文档可以先手写,然后再形成电子版存档。

相关文章

  • 如何去阅读并学习一些优秀的开源框架的源码?

    在软件开发中遇到问题的时候,我倾向于在不需要阅读源码的情况下解决问题,我会优先去查官方文档、FAQ、google或...

  • MJExtension(一)

    继续进行优秀开源框架的源码学习,这次打算学习一些常用的model解析的框架,比如YYModel,MJExtensi...

  • 架构成长学习

    架构成长学习 1. 阅读源码 说到阅读源码,可能很多同学都尝试过去阅读一些开源框架的源码,但是很难找到一个入口点;...

  • iOS之__unsafe_unretained

    前言 在学习的过程,难免会用一些开源库,想要提升自己的能力,避免不了阅读和学习优秀的开源库源码,就发现一些开源库的...

  • 设计模式之单例模式

    前言 作为一个好学习的程序开发者,应该会去学习优秀的开源框架,当然学习的过程中不免会去阅读源码,这也是一个优秀程序...

  • Dubbo源码阅读(1)搭建Dubbo源码阅读环境

    Dubbo源码阅读(1)搭建Dubbo源码阅读环境 一直想阅读一些开源框架的源码,但是由于上学期事情太多而一直没有...

  • 架构师成长之路(内附推荐书籍)

    1. 阅读源码 说到阅读源码,可能很多同学都尝试过去阅读一些开源框架的源码,但是很难找到一个入口点;即便找到入口点...

  • 分享一个后台框架-FastAdmin

    产品经理如何发现优秀的界面方案以及优秀的交互方式,最快的办法就是学习优秀的同行。当然,还可以学习优秀的开源框架方案...

  • Mybatis源码阅读环境搭建

    Mybatis是一款优秀的Java ORM框架,想要深入学习它,自然要从源码开始。但是源码阅读的学习通常伴随着复杂...

  • 设计模式---模板方法模式

    本来想学习spring源码的,但现在的水平去读它感觉太难了,还是先学习一些设计模式(毕竟开源框架中使用了很多的设计...

网友评论

    本文标题:如何去阅读并学习一些优秀的开源框架的源码?

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