如何阅读框架源代码

作者: 小虫巨蟹 | 来源:发表于2016-09-26 18:02 被阅读1040次

为了解决一些特定问题,我们常常需要去阅读一些框架的源代码(例如为了写一个自定义的webpack插件,我们需要阅读webpack的源代码),或者有时候我们只是单纯的想学习一下优秀框架的设计方法(想必很多前端的同学们都去读过jquery的源码)。好的技巧能让我们的阅读工作更加顺畅,甚至事半功倍

了解框架的设计思想

这一步尤为关键,我们看不懂源码(或者看起来举步维艰),并不是因为不懂某一句语法,而是不明白作者的思路。举一个简单的例子:

    //这个方法可以获得point2顶角的弧度值
    function getAngle(point1, point2, point3) {
        var bb = (point2.y - point1.y)*(point2.y - point1.y) + (point2.x - point1.x)*(point2.x - point1.x);
        var aa = (point3.y - point1.y)*(point3.y - point1.y) + (point3.x - point1.x)*(point3.x - point1.x);
        var cc = (point3.y - point2.y)*(point3.y - point2.y) + (point3.x - point2.x)*(point3.x - point2.x);
        var cosa = (bb + cc - aa)/(2*Math.sqrt(bb)*Math.sqrt(cc));
        return Math.acos(cosa);
    }

getAngle方法接收三个坐标参数,可以计算出point2顶角的弧度值,如果不告诉你这使用了运用三角形的余弦定理,恐怕你看半天也看不出来这是怎么算出来的

那么我们可以通过什么渠道去了解框架的设计思想:

  • 到框架的官网看文档,开源的框架,甭管详不详细,这肯定是第一手权威资料
  • 到网上搜别人的分析总结,大多数情况下,都会有大神已经研究过了,站在巨人的肩膀上,能省不少事

另外,设计思想是整个框架层面的,对于每一个实现细节,又会使用不少设计模式,例如单例模式、代理模式、工厂模式等等,这就需要平时的积累了。有一定代码量的积累之后,建议阅读一些设计模式类的书籍,对自己的代码设计,以及阅读别人的源码,都很有益处。

先摸清主脉络

了解了代码的设计思想的另外一个作用就是,我们可以先摸清框架代码的主脉络,暂时忽略一些细节。例如webpack使用了Tapable的插件架构,我们只需要知道Tapable的使用方式,而不需要去搞清楚Tapable是怎么实现的。也就是说,有些模块,我们一开始只需要知道它是干什么的,把它当做一个黑盒子,有必要的时候再去阅读。

具体的做法:

  • 找到框架入口,循着入口去读
  • 遇到分支,判断可否略过?
    +是否关键?否:略过
    +是否复杂?是:略过,回头再来收拾它
    +是否功能明确?是:略过,必要的时候再来阅读

有的放矢

了解了框架的设计思想,如果你还带着一个确定的目标去阅读,也能提高阅读的效率。例如,为了去实现一个处理多个html模板的webpack插件(插件),我找了一个类似的框架,然后对插件涉及到的部分,具体的到webpack源码中去重点阅读。

搭建调试环境,打印调试信息

在阅读的过程中,我们常常会遇到部分代码让人摸不着头脑、百思不得其解的情况,老是卡在这种问题上,容易让人心生退却。此时最好的办法就是,将调试环境搭建起来,试着去修改某一行代码,或者增加几行打印信息,灵感自来。

总结

技巧的使用也是要建立在过硬的基础上的,这唯有平时多写多读了~~

欢迎关注,共同学习,有问题请评论或发简信,如果你觉得文章对你有所帮助,请不要吝惜你的喜欢,当然,给我打赏我也不会客气的~~

更多精彩,邀您关注:


相关文章

  • 如何阅读框架源代码

    为了解决一些特定问题,我们常常需要去阅读一些框架的源代码(例如为了写一个自定义的webpack插件,我们需要阅读w...

  • 南京大学 计算机系统基础 课程实验 2018(PA2)

    其他部分 PA0-1 1. 主要难点 1.1 NEMU是如何模拟指令执行的过程 这一个阶段就是阅读源代码,代码框架...

  • 如何阅读源代码

    俗话说 听君一席话,胜读十年书。阅读好的源码,正如和智者聊天,受益无穷。 那么如何能更加高效的阅读源代码呢? 首先...

  • 阅读框架开源代码技巧

    基础性结构语法 注解,反射,泛型,并发,OOP,设计模式,数据结构算法 移动端源码分析入口 一步一步分析,如果AP...

  • Vuex 源码解析(如何阅读源代码实践篇)

    上一篇文章说的是如何阅读框架源代码,收到了“如果更详细一点就好了”的反馈,不如就以 Vuex 为切入点进行一次实践...

  • Java的spi机制

    最近在阅读Dubbo框架源代码时,经常看到@Spi,查了一下SPI: Service Provider Inter...

  • 如何阅读开源代码

    开源代码一般工程大,文件多。项目庞大复杂,让人无从下手。我也在苦苦求索当中,下面说一下我的心得。1.一般从main...

  • 解析iOS开源项目--SDWebImage

    都说阅读源代码对于功力的提升是十分显著的, 但是很多的著名开源框架源代码动辄上万行, 复杂度实在太高, 之前我曾经...

  • Mantle 源代码阅读笔记 一

    Mantle 源代码阅读笔记 一 Mantle 源代码阅读笔记 一

  • Elasticsearch Guice 的使用

    Elasticsearch 源代码中使用了Guice框架进行依赖注入. 为了方便阅读源码对这块的不理解, 此处我先...

网友评论

本文标题:如何阅读框架源代码

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