关于阅读源码的总结

为什么开始阅读

其实源码平时也有在看,但是时间比较碎片化,刚好最近需要做内部技术分享在调研技术栈,为了避免枯燥无味,想更贴合平日的项目,spring与jdk基本也没太多新意并且自以为自己没太自信能够讲清楚,另一方面数据库一般又是整个项目的核心所在,所以这次主要从国内最常见的orm框架mybatis作为主要的一个主要的分享内容。
由于考虑到整个源码的分析可能篇幅较大,不追求华丽的描述和故弄玄虚,只是想简简单单的讲清楚,所以分多篇文章去分析,每篇文章自己觉得比较重要的点。
在这里插入图片描述

如何阅读源码

源码里一般都是OOP的一种最佳实践,可以学习其中的设计思想并应用在商业项目中,但是很多人最开始看源码很容易陷入到实现细节中,抓不住重点和主链路,所以很容易劝退。所以学习源码还是有一些技巧的。

  1. 抓住主线,分析源码首先就是宏观上知道这个源码的目的是什么,例如spring就是实现了IOC和DI的功能,概念比较抽象,也可以直接去实践一下,没有spring和有spring写一下创建对象的代码有啥不同,加深对框架的理解,只有清楚了整个框架带来的价值之后,分析源码才能避免“不识庐山真面目” 的尴尬。
  2. 区分jar的边界与职责,很多框架都是一堆的jar去不断的集成,我们分析源码首先要宏观的去看待整个框架做了什么事情,然后再分清楚每个jar对应大概做了什么事情,然后这样就能在分析源码的时候尽量不迷路。
  3. 抽象思维,对于开源框架来说,其很重要的一个特性就是要把通用需求给稳定化,在此基础上进行迭代,不断的添加最新的特性,在这个过程中保持良好的兼容性与扩展性,这就要求对其他框架采取解耦的方案,保持非入侵的方式。这样带来的代码上的体现就是处处是接口,处处是抽象类,很多方法都是模板方法。这里的行话,就是不要“写死”。依赖抽象而不是实现,这样就可以尽量的松耦合,所以有意识的增强对于接口和抽象类的理解,所以很多人也认为 要比较好的阅读源码首先要熟悉经典设计模式与设计原则等面向对象理论。
  4. 底层代码能力,这一块是对于一些偏底层的一些技术实现的熟悉,例如反射,动态代理,字节码植入,或则是范型的使用,函数编程等语法糖的熟悉。当然如果能熟悉JUC包的东西,多线程的理解也非常重要。
  5. 带着问题看源码,单纯的阅读的确很容易枯燥,但是我们在使用的过程中,由于前期可能主要关注在如何快速上手可能网上随便搜索入门教程就开始使用后,满足了日常工作需求就没再深入的动力,但是其中某个特性为什么实现,例如mybatis定义的mapper接口没有实现类,是如何注入到spring容器,带着这样的疑问,我们就很自然的产生了好奇心。
  6. 画图,图像是比文字更容易加强记忆和理解的东西,语言是后天的,但眼睛是天生的,我们应该善于利用这单,阅读感觉有点混乱的时候就开始进行思维导图的整理,流程图的整理等等,这样的脑图是很有价值的,当然也不要因此打断阅读的连贯性,而是一个大的阶段整理一下即可,每个人的逻辑思维强度会有些不同,可以按需掌握节奏。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值