前言
閱讀框架源碼的能力想必是每個(gè)程序員都應(yīng)該熟練掌握的一門技能屋群,既然是一門技能还惠,便有它的方式方法栅迄,下面我就總結(jié)一下,教你如何高效的閱讀框架源碼区宇。
為什么要閱讀源碼
時(shí)間很寶貴娃殖,我們只做有用的事,那到底為什么要閱讀源碼呢议谷?或者說(shuō)閱讀源碼有什么好處呢炉爆?有如下用途:
- 面試
- 解決問題
- 提升編程能力
第一點(diǎn),就不用多講了卧晓,在每次面試過程中芬首,都多少會(huì)遇到源碼的題,第二點(diǎn)逼裆,當(dāng)你工作中遇到一些特殊的問題時(shí)郁稍,有時(shí)候不得不去閱讀你調(diào)用的函數(shù)或者類的源碼,
這些類可能是你同事實(shí)現(xiàn)的業(yè)務(wù)代碼波附,可能是你使用的三方框架源碼艺晴,你不得不去看他們的實(shí)現(xiàn)細(xì)節(jié)來(lái)解決你的問題。第三點(diǎn)掸屡,當(dāng)然在你閱讀源碼的過程中封寞,也間接
提高了你的編程能力,因?yàn)槟銜?huì)經(jīng)常發(fā)現(xiàn)一些優(yōu)秀的代碼實(shí)現(xiàn)仅财,可能會(huì)比你以前的實(shí)現(xiàn)思路更好狈究,這也是一種成長(zhǎng)。
如何閱讀呢盏求?
下面以android gradle項(xiàng)目為例抖锥,列舉一些方法
- 了解背景
- 官方文檔
- 下源碼配置本地運(yùn)行環(huán)境
- 看清目錄結(jié)構(gòu)
- 善用工具
- 找到框架入口
- 順著類或函數(shù)功能一一擊破
了解背景
做任何事情都是有動(dòng)機(jī)或者原因的亿眠,作者為什么要開發(fā)這個(gè)框架,基于什么樣的背景磅废,只要你搞明白了當(dāng)時(shí)的背景纳像,就能抓住重點(diǎn),避免浪費(fèi)時(shí)間精力拯勉,避免多走
彎路竟趾,比如Matrix框架,它的大背景就是做Android性能優(yōu)化宫峦,那性能優(yōu)化一般都有:內(nèi)存優(yōu)化岔帽、包體積優(yōu)化、啟動(dòng)優(yōu)化等等导绷,那自然而然你就能找到適合的方
向犀勒,然后逐個(gè)擊破。
官方文檔
這個(gè)被很多人忽略的東西妥曲,特別是在使用國(guó)外的框架時(shí)贾费,因?yàn)槎际怯⑽牡模院芏嗳酥皇撬蚜藥灼┛陀庖唬缓罂磩e人教你如何使用铸本,就完事了肮雨,但其實(shí)官方文檔中遵堵,
會(huì)有很多使用的細(xì)節(jié),可能會(huì)教你避免很多的坑怨规,這個(gè)一定要重視陌宿,如果框架沒有文檔,那它不能稱之為一個(gè)好的框架波丰,你就要考慮要不要使用了壳坪,這就屬于框架選
型的范疇,相信你一定可以做出更好的選擇掰烟,我就不啰嗦如何選了爽蝴。
下源碼配置本地運(yùn)行環(huán)境
既然要閱讀源碼,如何可以下載本地并運(yùn)行的話纫骑,建議還是要下載下來(lái)運(yùn)行蝎亚,這樣你甚至可以debug調(diào)試,可以更清晰的看到代碼的執(zhí)行過程先馆。
看清目錄結(jié)構(gòu)
一個(gè)優(yōu)秀的框架发框,在目錄結(jié)構(gòu)上也是下了功夫的,很多分包分層分塊的結(jié)構(gòu)煤墙,基本和目錄結(jié)構(gòu)相符梅惯,看到一個(gè)清晰的目錄結(jié)構(gòu)宪拥,對(duì)你的閱讀源碼效率會(huì)大大提高。
所以一定要提前弄清哦
善用工具
推薦使用StarUML, 為什么铣减?因?yàn)樗梢暂o助你畫類圖她君,類圖可以看到很清晰的函數(shù)和變量,還有類與類之間的關(guān)系葫哗,接著上一步
我們就可以從某個(gè)目錄結(jié)構(gòu)深入犁河,摸清該目錄下源碼的總體設(shè)計(jì)。
找到框架入口
當(dāng)我們摸清類的總體設(shè)計(jì)后魄梯,就可以找到程序的入口桨螺,通常我會(huì)按照官方提供的框架使用用例,找到對(duì)應(yīng)的類和方法酿秸,作為入口灭翔,然后去看每個(gè)入口背后的實(shí)現(xiàn)邏輯
順著類或函數(shù)功能一一擊破
到最后,肯定是詳細(xì)的閱讀每個(gè)功能背后的實(shí)現(xiàn)邏輯辣苏,這時(shí)候看的就是細(xì)節(jié)肝箱,如果有些細(xì)節(jié)看不懂,那估計(jì)是你上面的沒做到位稀蟋,請(qǐng)返回重做煌张,哈哈。
總結(jié)
最后做個(gè)總結(jié)退客,凡事都講究效率骏融,用對(duì)的方法就可以提高,那我們?nèi)绾握曳椒孛瓤瘢肯热タ纯磩e人如何做的档玻,然后再結(jié)合自己的實(shí)際經(jīng)驗(yàn),總結(jié)磨合茫藏,最終形成自己的
方式方法误趴。我相信這是每個(gè)優(yōu)秀程序員的必經(jīng)之路,所以請(qǐng)加油努力务傲,給自己打氣凉当,做到善于閱讀源碼,并以此為樂售葡,哈哈看杭。