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