如何有效的閱讀開原始碼
一、初步瞭解
1.在下載原始碼之後,先看下程式碼目錄組織結構,如base代表基礎庫,net代表網路庫等我
2.開始閱讀框架的原始碼之前,先去google蒐集下資料:
這個框架是解決了什麼問題?都是用了什麼技術?
分為多少個模組,每個模組之間有什麼聯絡?
儘量看官網英文的資料,因為中文技術部落格的內容很多是錯誤的。
3.試圖將程式完整的跑起來,編譯通過、修改配置檔案,然後正常執行起來;
這時我已經把程式跑起來,玩起來,知道它實現了什麼功能,並且我也在使用此功能
二、耐心看文件,看測試用例
一個好的開源專案是有完善的文件的,比如百度開源的RPC框架brpc,專案地址是
README.md:一份新手導讀手冊
docs目錄:框架設計文件,業務相關基礎知識介紹文件,編譯入門指南,程式碼的風格文件,程式的命令操作手冊,以及類圖,流程圖,架構圖等等有用的文件,務必要耐心好好的看,多看少問多實踐
example目錄:例子目錄,先通過例子上手學會如何使用
test目錄:測試目錄,學習下單元測試是如何寫的
三、玩耍環節
各種玩:
執行example中的例子檢視效果,也可以修改example中的例子來驗證自己的想法。
修改test目錄中的程式碼,來驗證自己的想法
程式配置也有很多可以玩的地方,盡情的玩,但是千萬別在線上環境玩!!!!
先學會如何使用,然後再去從原始碼角度理解原理的東西。
四、讀原始碼,反哺專案開發程式碼
相信經過前面三個階段,你已經是各種玩,各種瞎折騰,心裡還是有很多疑問吧?
這個功能真牛逼,是如何實現的呢?
我的配置檔案為什麼沒有生效呢?
程式為什麼被我搞掛了呢?
。。。。。。。。。。。。。
好!很好!帶著這些你心裡的問題,去原始碼中找答案吧
1.先總體後區域性,把握好主體邏輯程式碼,然後再逐層深入下去
一上來就陷入太多的實現細節是大忌!!!
2.熟悉主體邏輯後,你大概能知道你感興趣的程式碼處於整個專案中的什麼模組,什麼檔案,什麼類中
是個什麼樣的處理流程,定位到具體程式碼,一行行的分析它
這個過程會持續一段時間,今天你感興趣這個問題,明天感興趣那個問題。
3.帶著問題去看程式碼,一個系統實現了什麼功能,為什麼要實現這些功能,是基於什麼業務場景?
如果要我來實現一套類似的系統,我會如何來考慮問題,如何來實現這套系統?
然後再看看別人是如何實現的,找到兩者之間的差距,並不斷縮小之間的差距。
五、寫筆記記錄想法,促進思考和總結
1.記錄解開問題謎團的過程
2.記錄下開原始碼中好的設計思想,好的程式碼技巧,以及任何你覺得好的東西
3.畫整個程式的流程圖,有利於理解程式的整個流程,而不被程式碼的細節所幹擾。
4.堅持記錄原始碼學習筆記,記筆記能夠有助於更深入的思考,以前很多問題只是淺層思考,不夠深入
六、仿寫專案
如果感覺自己對於專案理解的還不到位,我推薦一個笨方法,抄專案程式碼,抄著抄著你就懂了。
如果想深刻的學習到原始碼的精髓所在,請寫一個相近的程式進行操練。
理解了這個程式並不表明掌握了這個程式,只有在操練一個相近的程式時,才知道你到底理解了多少,掌握了多少