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