关于看Spring源码的几点杂感

业界的浮躁

打开B站学习编程,各种XXX源码解析、深入理解XXX源码的视频五花八门(大部分内容粗制滥造,尤其是图灵、马士兵这俩机构的视频,妥妥营销号,标题党!令人作呕!);培训机构也喜欢贩卖焦虑,推出各种源码讲解课程;去知乎上逛逛也是讲:要看XX源码,深入学习才能成为大神。

图灵马士兵
在这里插入图片描述在这里插入图片描述

看源码正确步骤?

那些直接叫你看源码的人一定是没有看过源码的人。
源码不是学习教材,是一个工业化的产物!所以其中必然包括了处理各种业务场景的复杂逻辑,直接看源码势必绕进这繁琐的细节当中,迷失在了源码里,也迷失了自己从初心。且不说这种复杂逻辑难以看懂,就算看懂了又能学到到多少东西呢?投入产出比又是多少呢?

应用(XXX的功能)–>原理(基本设计思想与架构)—>源码(具体技术实现)

  • 看XXX的源码,首先要知道XXX怎么用?都有哪些功能?起码要做到熟练应用吧。这些功能对XXX的开发者来说就是需求。我们自己写代码首先也是要先理解需求嘛。

  • 有了需求,首先是概要设计啊,架构是怎么样的?数据结构是怎样的?业务流程是怎么样的?我看想要了解XXX的具体实现,首先要明白其基本原理(架构、数据结构、基本流程……)。先把对于XXX的认知框架搭建起来,理解XXX的主干。对于主干的理解,去百度别人现成的总结就行,不要试图从源码细节中归纳出主干,这是个愚蠢的行为。

  • 看源码细节,要带着问题去看,这个问题越具体越细节看源码的效率越高,投入产出比越高。因为问题精确,就能精确定位到需要理解代码片段。看一段代码要比看整个框架代码容易的多啊。而且看代码之前,一定要先看注释,这非常有助于理解源码作者的意图!如果直接去看源码到头来大概率会迷失。同时要使用idea生成类图,分析继承树,会更容易理解。

我看了三四天的Spring IOC源码解析视频,看老师debug基本上一行行分析Spring干了点啥,到最后我是清楚了IOC容器的基本原理,但是投入产出比太低了。换句话说,如果我要把IOC容器启动全流程的源码细节看懂,三四天是远远不够的。而且我看源码的时候,没有一个具体的问题,导致我只是流水账似得跟着老师一行行的走,看的过程中没有思考,相当于白看了。

看源码为了什么?

  • 看源码不是为了装逼的!不要觉得看了XX源码就牛逼了,不存在的。所以首先要放平看源码的心态的。
  • 看XXX源码是为了更好的使用XXX,理解其原理与具体技术实现后,使用起来肯定会更加得心应手,出了问题也更好排查。更高级点,还能拓展XXX,给XXX写插件。(比如基于Spring写点自己的工具,MyBatis的作者就肯定看过Spring的源码)
  • 看XXX源码是为了能实现一个与XXX相似的东西,如果我要实现某个功能,不妨先看看已有的产品是如何实现的。
  • 看XXX源码不是为了面试的,为了面试直接去看别人总结好的就行了,实在理解不了,就死记硬背,能背下来也差不多能糊弄过去。

最后

一定是先弄清基本原理(架构),详细原理(业务流程、数据结构),有了具体的细节的问题再去看源码片段(最好以debug的方式)。不要,不要,不要直接看整个源码!

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值