Java程序员应该如何学习框架源码?

不管对于哪个段位的程序员来说,读源码都是一件好处颇多的事情,特别于初学者而言,这能迅速的吸纳优秀框架精华代码营养,迅速成长。不巧的是,晦涩难懂的源码,很容易让人心生怯意。今天分享一下读源码的方法。

一、了解框架解决了什么问题

这不光对读源码有帮助,对整个学习都很有帮助。思考一个问题:你学习 Vue\React 的原因,除了它们如日中天,再不学习都不好意思找工作了,还掺杂了一些它们的某些优秀特性能给我带来某些好处的思考么?


新潮的框架,开发者需要而且也应该去了解,相比之前的技术体系,这个框架到底解决了什么问题,优势在哪,怀着目的去学习才不至于迷茫。例如 Vue\React 最大的优点是什么呢?组件化吧,带着框架是如何解决这个问题的疑问去学习,定能事半功倍。

二、了解框架的设计思想

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

 //这个方法可以获得point2顶角的弧度值
    functiongetAngle(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 顶角的弧度值,如果不告诉你这使用了运用三角形的余弦定理,恐怕你看半天也看不出来这是怎么算出来的。

了解框架的设计思想的方法:

  1.到框架的官网看文档。开源的框架,甭管详不详细,这肯定是第一手权威资料

  2.到网上搜别人的分析总结(源码分析也不会少),大多数情况下,都会有大神已经研究过了,站在巨人的肩膀上,能省不少事

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

三、搭建调试环境,摸清执行主脉络

细分到每个模块,要对模块功能有个整体的把握,如何去做到这个“把握”?除了官方文档和网上查阅的资料,最好的办法就是写一个简单的 Demo,搭建好测试环境,增加一些调试信息,自然能理清除框架的生命周期中,每一步需要调用那个模块(对于目录结构很清晰的优秀框架,有时候也可以凭直觉猜测,打印日志确认)

四、分清主次

框架源码就是一颗枝繁叶茂的参天大树,而你要做的事情是从根部往上爬。树要这么多分支,时间又是这么昂贵,阅读的策略很重要。我们的阅读路径,要以主要流程为主(也就是树的主驱赶,这样才能尽可能快的到达顶点),对于一些细枝末节,再这之后再来慢慢啃(或者有必要的时候)。

例如,要去阅读 Vue 的源码,有个目录是解析模板,生成语法树 AST 从而最终生成 Render Function 的, 其实这一步最关键的是这个 Render Function 的生成结果,对于如何去解析模板、生成语法树,可以先放一放,回头需要的时候再回头看。否则你很容易卡死在某个点上出不来,从而产生放弃的念头

五、坚持不放弃

技术策略得当,遇到棘手过不去的问题也很正常,这时考验的就是毅力了,继续调试、搜索资料、或者找个大神来问一问都行,只要不放弃就好。

六、学会向他人求助

无论你的自学能力有多强,无论你是P4还是P7,总会有遇到困难的时候。普通人遇到瓶颈只能自己默默的去一次次冲击,如果冲击成功还好,是另一片天地;倘若冲击失败,轻则灰心丧气迷失一阵子,重则一蹶不振。

如果有人领路呢?看过小说的都知道,冲关的时候如果有人指导,借鉴前人的经验,可以少走很多弯路。人生不过数十载,何不把时间节省出来去多学点东西,多做点有意义的事情。

为了帮大家尽快的提升自己,更有效率的进阶,我精心准备了框架源码系列资料,希望能帮你早日突破自己!

点击免费领取:【Java互联网技术交流】备注:777 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341