關于閱讀源碼的一點心得

一挤忙、前言

本文來談談自己關于閱讀源碼的一些心得體會钩骇,希望大家能夠更好的意見泛啸,留言回復。

二属百、為何要閱讀源碼

先分享一下為何要研究源碼 :

  • 我們在做項目時候一般會遇到下面的問題:問題一是不知道如何去設計记劝,這一般是職場新手經(jīng)常會遇到的問題,比如剛從學生時代跨入職場的新手族扰,當初我當入職阿里時候就有這個感覺厌丑,給你一個需求來做概要設計,竟然沒有思路渔呵,不得不去看當前系統(tǒng)類似需求是如何設計的怒竿,然后仿照去設計。問題二設計時候問題考慮不周全扩氢,這一般是由于設計經(jīng)驗匱乏引起的耕驰,相比職場新手,這類人對一個需求依靠自己的經(jīng)驗已經(jīng)能夠拿出一個概要設計录豺,但是設計中經(jīng)常會遺漏一些異常細節(jié)朦肘,比如使用多線程有界隊列執(zhí)行任務,如果機器宕機了双饥,那么隊列里面的任務不存盤的話厚骗,機器下次啟動時候這些任務就丟失了。

  • 對于這些問題兢哭,說到底都是因為經(jīng)驗不夠领舰,而經(jīng)驗一般都是從項目實踐中積累而來,所以招聘單位一般都會限定工作時間大于2年了迟螺,3年了冲秽,是有道理的,因為這些人的項目經(jīng)驗都是比較豐富的矩父,項目中遇到的場景也比較多锉桑。經(jīng)驗積累一方面靠時間,其實另外一方面通過學習源碼也可以獲的窍株,看源碼可以擴展我們的思路民轴,這個是變相的提高我們的經(jīng)驗攻柠,雖然通過時間積累獲取經(jīng)驗的方式不能短時間內(nèi)達到,但是短時間內(nèi)通過學習經(jīng)典開源框架開源項目的設計思想理念還是會很有受益的后裸。

  • 另外進行職場后一般都是要先熟悉現(xiàn)有的系統(tǒng)瑰钮,如果有文檔還好,沒文檔的話就得自己去翻代碼自己去研究微驶,這其實也是考驗代碼學習能力的浪谴,如果你之前看過好多開源代碼的話,那么就不會那么費勁因苹。

  • 看源碼最大的好處是可以開闊你的思維苟耻,提升你的架構設計能力,有些東西書本和緊靠自己思考是很難學到的扶檐,必須通過看源碼凶杖,看別人如何設計的,然后思考為何這樣設計款筑。能力的提高判斷不在于你寫了多少代碼智蝠,做了多少項目,而在于給你一個業(yè)務場景時候醋虏,你是否能拿出幾種靠譜的解決方案寻咒。而如何才能拿出來那,一來靠經(jīng)驗颈嚼,二來靠歸納總結毛秘,而看源碼,看經(jīng)典框架如何實現(xiàn)的阻课,則可以快速累加你的經(jīng)驗叫挟。

三、如何閱讀源碼

  • 個人對于看開源框架有個體會是限煞,當你想看某一個框架的源碼前抹恳,先去Google查找這個開源框架的一些框架組成介紹(資料最好是找官方文檔,最好是英文的署驻,因為網(wǎng)上資料太泛濫奋献,并且質(zhì)量不一,并且有些都是錯的)旺上,看看這個框架有幾個模塊瓶蚂,各個模塊是做什么的,有什么聯(lián)系宣吱,每個模塊都有哪些核心類(這在你看源碼時候會有個印象窃这,哪些類是做什么用的),

  • 然后對那個模塊感興趣就去寫個小的demo先運行一下具體了解這個模塊的作用(你要想研究源碼實現(xiàn)首先的知道這個模塊是干啥的征候,會產(chǎn)生什么作用)杭攻,然后在debug進入看具體實現(xiàn)祟敛,在debug過程中第一遍是走馬觀花,簡略的看下調(diào)用邏輯兆解,都用了哪些類馆铁;

  • 第二遍則是有著重點的debug看看這些類擔任了架構圖里面的那些功能,使用了哪些設計模式痪宰?如果第二遍能感覺到有些感覺了叼架,大致知道了代碼功能實現(xiàn)畔裕,但是對整體代碼結構還是不是很清晰衣撬,畢竟代碼里面多個類來回調(diào)用,很容易迷失當前斷點的來處扮饶,那么你可以進行第三遍度dubug,這時候你要把主要類的調(diào)用時序圖畫出來具练,可能的話,你最好吧類圖結構也畫出了甜无,等畫好后扛点,在對著時序圖分析調(diào)用流程,就可以清楚的知道類直接調(diào)用關系岂丘,通過類圖就知道類的功能作用和相互依賴關系陵究。

  • 另外閱讀源碼時候畫出時序圖和類圖還有一好處,因為人總是善忘的奥帘,如果隔一段時間后你在去看之前看過的源碼铜邮,雖然模糊有些印象,但是當你想去看某個模塊的一些邏輯時候寨蹋,很多情況下就需要根據(jù)demo再從頭debug找了,而如果有了這倆圖你就可以從時序圖或者類圖里面直接找到松蒜,并且看一眼時序圖就知道整個模塊的脈絡了

  • 還有查框架使用說明時候最好去官網(wǎng)去,雖然是英文已旧,但是看久了就好了秸苗,畢竟還有google翻譯那

四、總結

本文來談了自己關于閱讀源碼的一些心得體會运褪,希望大家能夠更好的意見惊楼,留言回復。另外并發(fā)編程系列已經(jīng)全部放出秸讹,想學并發(fā)的童鞋可以 單擊我 檀咙,學dubbo童鞋可以 單擊我

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嗦枢,隨后出現(xiàn)的幾起案子攀芯,更是在濱河造成了極大的恐慌,老刑警劉巖文虏,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侣诺,死亡現(xiàn)場離奇詭異殖演,居然都是意外死亡,警方通過查閱死者的電腦和手機年鸳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門趴久,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搔确,你說我怎么就攤上這事彼棍。” “怎么了膳算?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵座硕,是天一觀的道長。 經(jīng)常有香客問我涕蜂,道長华匾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任机隙,我火速辦了婚禮蜘拉,結果婚禮上,老公的妹妹穿的比我還像新娘有鹿。我一直安慰自己旭旭,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布葱跋。 她就那樣靜靜地躺著持寄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪年局。 梳的紋絲不亂的頭發(fā)上际看,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音矢否,去河邊找鬼仲闽。 笑死,一個胖子當著我的面吹牛僵朗,可吹牛的內(nèi)容都是我干的赖欣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼验庙,長吁一口氣:“原來是場噩夢啊……” “哼顶吮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粪薛,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤悴了,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湃交,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡熟空,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了搞莺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片息罗。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖才沧,靈堂內(nèi)的尸體忽然破棺而出迈喉,到底是詐尸還是另有隱情,我是刑警寧澤温圆,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布挨摸,位于F島的核電站,受9級特大地震影響捌木,放射性物質(zhì)發(fā)生泄漏油坝。R本人自食惡果不足惜嫉戚,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一刨裆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彬檀,春花似錦帆啃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坤学,卻和暖如春疯坤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背深浮。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工压怠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人飞苇。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓菌瘫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親布卡。 傳聞我的和親對象是個殘疾皇子雨让,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容