如何快速閱讀原始碼
這篇文章,是對我自己常用閱讀原始碼的習慣的總結。
(零):先做備份
當拿到一份原始碼,不管是工作上臨時接手的專案還是平時在網站上down下來的demo,如果想要完全看懂,往往需要做一些改動,有時候改動的比較多就會忘了原來的程式碼是什麼樣的,因此我建議,得到一份新的原始碼後首先應該進行備份。
(一):編譯跑一遍
當拿到了一份新的原始碼,我不知道他的作用是什麼,那麼最好的辦法就是先把軟體編譯以後跑一遍。如果發現軟體編譯時出錯,那麼顯然,這不是一個好的原始碼,這也就提不上快速閱讀了,慢慢踩坑才是王道。
(三):梳理資料的來龍去脈
計算機的最大作用是用來計算的,既然是要計算,那麼就要有資料的輸入和輸出,例如我是做機器人的,工控機和下面微控制器有著各自的任務,那麼只要我找到工控機和微控制器通訊的部分,我就就可以通過通訊的資料一步步查詢資料的處理方法,最後得到一條資料從輸入到輸出的鏈路,這樣雖然鏈路中每一個呼叫的方法我不一定知道它是具體如何實現的,但是我可以大致得到每一個方法的作用。
(四):閱讀程式碼寫註釋
前面說的是比較粗略的做法,接下來要專注細節,就要閱讀方法中的每一行程式碼,對於具體的方法,最好是有著演算法文件,不然有一些程式碼,很難看明白,例如我學習牛頓迭代法時曾經見過使用該方法開方的程式碼,如果沒有演算法文件,絕對看不明白它的作用。
如果遇上沒有演算法文件的專案,那就只能自己硬看了,我的建議是每行寫註釋,這個有助於分清自寫程式碼,結構程式碼,程式自帶程式碼和第三方庫的API。程式自帶程式碼指的是類似MFC這樣的框架生成時自己出現的程式碼。結構程式碼是由專案架構工程師寫的,方便分工合作而使用的程式碼。分清這四類程式碼後就會發現,自寫程式碼和呼叫第三方庫往往是核心,但是剛開始最讓人搞不懂的,是程式自帶程式碼和結構程式碼
(五):自己嘗試進行修改
俗話說,輸出是最好的學習。在我大學的時候,我的導師跟我說,你學習一份程式碼,感覺差不多了就上手改,如果改完的程式碼成功的跑了起來並且實現了你預期的功能,那麼你就可以說已經學會了。因此我建議,對於一個原始碼,到了最後的學習方法就是自己上手修改,在debug中學習是最快的,