如何閱讀源代碼

俗話說 聽君一席話,勝讀十年書。閱讀好的源碼,正如和智者聊天,受益無窮。

那么如何能更加高效的閱讀源代碼呢?

首先,可以把源碼分成兩類:
一類是某些功能性的代碼,這類代碼往往規(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!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,167評(píng)論 25 708
  • 從來沒想過父親會(huì)聽我講故事,談?wù)摿撕芏嚓P(guān)于要去的地方,關(guān)于安全、消費(fèi)、住處、文化。不是第一次出去了,這次有些不一...
    蘇霽月閱讀 329評(píng)論 2 0
  • 前言:這次的作業(yè)仍然延續(xù)上次的風(fēng)格,寫一封信。我很喜歡寫信,就像面對(duì)面,一對(duì)一的交談。 親愛的表弟,6月7日和8日...
    小寶不長(zhǎng)高閱讀 357評(píng)論 0 0
  • 問題描述 開發(fā)中遇到了關(guān)于Masonry對(duì)于Scrollview的contentSize的設(shè)置問題。通過閱讀Mas...
    W_SN閱讀 10,893評(píng)論 16 18
  • 文:沙瀾 韻:平水韻 昔日一房亂 今時(shí)顧影煢 虎龍相繼去 坡道又逢卿 場(chǎng)景1: 場(chǎng)景2: 場(chǎng)景3: 場(chǎng)景4: 【P...
    沙瀾閱讀 303評(píng)論 0 8

友情鏈接更多精彩內(nèi)容