俗話說 聽君一席話,勝讀十年書。閱讀好的源碼,正如和智者聊天,受益無窮。
那么如何能更加高效的閱讀源代碼呢?
首先,可以把源碼分成兩類:
一類是某些功能性的代碼,這類代碼往往規(guī)模比較小,通讀一遍一般不需要耗費(fèi)太多時(shí)間。閱讀源碼的方法想來也簡(jiǎn)單,只要保持在特定代碼上的專注,多投入點(diǎn)時(shí)間,攻克它相信不會(huì)有太大難度。
另外一類就是大型項(xiàng)目的源碼了。這類源碼由于其是由多個(gè)功能模塊組成的,往往代碼量龐大,不太可能在短時(shí)間內(nèi)讀完。這時(shí)候就需要一些方法來解決閱讀源碼的問題。
下面談?wù)勎艺J(rèn)為閱讀這類源碼最有效的幾個(gè)方法。
首先是讀源碼的開發(fā)文檔和api文檔。文檔其實(shí)是作者思路的體現(xiàn),它使我們能對(duì)源碼架構(gòu)和功能能有個(gè)比較深刻的了解。通過閱讀源碼的相關(guān)文檔,經(jīng)常會(huì)發(fā)現(xiàn)之前怎么讀都讀不明白的地方,突然變得豁然開朗!另外,強(qiáng)烈建議直接讀英文文檔,而非翻譯成中文的“二手資料”。英語是程序員的必備技能,英文看不懂怎么辦?那就去學(xué),早學(xué)早受益!
其次是debug。在debug之前,要先讓代碼能在IDE里跑起來。sublime,vim等代碼編輯器有其自身的使用場(chǎng)景,但個(gè)人認(rèn)為在debug代碼這一塊并不適合;專業(yè)的IDE在調(diào)試代碼的同時(shí),能夠觀察變量的值和堆棧信息,能夠分析方法和類之間的關(guān)系,有助于我們理清思路。除了打斷點(diǎn),還可以通過打印log的方式調(diào)試源碼。
再然后是做筆記。為了各個(gè)功能模塊之間的關(guān)系,可以通過畫類圖,畫思維導(dǎo)圖等方式,將一個(gè)大項(xiàng)目層層拆解成多個(gè)相對(duì)獨(dú)立的部分,再將它們逐個(gè)擊破。畫類圖推薦使用 plantUML,這是一款通過寫腳本的方式生成類圖的軟件,很適合程序員使用。而思維導(dǎo)圖的軟件就有很多了,我本人經(jīng)常使用百度腦圖和processon。
最后可以多讀源碼自帶的單元測(cè)試代碼,單元測(cè)試的代碼相當(dāng)于項(xiàng)目的sample,包含著功能點(diǎn)和相關(guān)用法。還可以自己寫單元測(cè)試代碼,自己實(shí)踐一遍有助于加深理解。
源碼閱讀是個(gè)長(zhǎng)期積累的過程。剛開始的時(shí)候可能感覺很吃力,無從下手。但只要通過持續(xù)的投入,再輔以正確的方法,就一定能會(huì)有收獲,會(huì)駕輕就熟。
所以,just do it,now!