1. 程式人生 > >如何有效的閱讀開原始碼

如何有效的閱讀開原始碼

一、初步瞭解

1.在下載原始碼之後,先看下程式碼目錄組織結構,如base代表基礎庫,net代表網路庫等我

2.開始閱讀框架的原始碼之前,先去google蒐集下資料:

這個框架是解決了什麼問題?都是用了什麼技術?

分為多少個模組,每個模組之間有什麼聯絡?

儘量看官網英文的資料,因為中文技術部落格的內容很多是錯誤的。

3.試圖將程式完整的跑起來,編譯通過、修改配置檔案,然後正常執行起來;

這時我已經把程式跑起來,玩起來,知道它實現了什麼功能,並且我也在使用此功能

 

二、耐心看文件,看測試用例

一個好的開源專案是有完善的文件的,比如百度開源的RPC框架brpc,專案地址是

https://github.com/brpc/brpc

README.md:一份新手導讀手冊

docs目錄:框架設計文件,業務相關基礎知識介紹文件,編譯入門指南,程式碼的風格文件,程式的命令操作手冊,以及類圖,流程圖,架構圖等等有用的文件,務必要耐心好好的看,多看少問多實踐

example目錄:例子目錄,先通過例子上手學會如何使用

test目錄:測試目錄,學習下單元測試是如何寫的

 

三、玩耍環節

各種玩:

執行example中的例子檢視效果,也可以修改example中的例子來驗證自己的想法。

修改test目錄中的程式碼,來驗證自己的想法

程式配置也有很多可以玩的地方,盡情的玩,但是千萬別在線上環境玩!!!!

先學會如何使用,然後再去從原始碼角度理解原理的東西。

 

四、讀原始碼,反哺專案開發程式碼

相信經過前面三個階段,你已經是各種玩,各種瞎折騰,心裡還是有很多疑問吧?

這個功能真牛逼,是如何實現的呢?

我的配置檔案為什麼沒有生效呢?

程式為什麼被我搞掛了呢?

。。。。。。。。。。。。。

好!很好!帶著這些你心裡的問題,去原始碼中找答案吧

1.先總體後區域性,把握好主體邏輯程式碼,然後再逐層深入下去

一上來就陷入太多的實現細節是大忌!!!

2.熟悉主體邏輯後,你大概能知道你感興趣的程式碼處於整個專案中的什麼模組,什麼檔案,什麼類中

是個什麼樣的處理流程,定位到具體程式碼,一行行的分析它

這個過程會持續一段時間,今天你感興趣這個問題,明天感興趣那個問題。

3.帶著問題去看程式碼,一個系統實現了什麼功能,為什麼要實現這些功能,是基於什麼業務場景?

如果要我來實現一套類似的系統,我會如何來考慮問題,如何來實現這套系統?

然後再看看別人是如何實現的,找到兩者之間的差距,並不斷縮小之間的差距。

 

五、寫筆記記錄想法,促進思考和總結

1.記錄解開問題謎團的過程

2.記錄下開原始碼中好的設計思想,好的程式碼技巧,以及任何你覺得好的東西

3.畫整個程式的流程圖,有利於理解程式的整個流程,而不被程式碼的細節所幹擾。

4.堅持記錄原始碼學習筆記,記筆記能夠有助於更深入的思考,以前很多問題只是淺層思考,不夠深入

六、仿寫專案

如果感覺自己對於專案理解的還不到位,我推薦一個笨方法,抄專案程式碼,抄著抄著你就懂了。

如果想深刻的學習到原始碼的精髓所在,請寫一個相近的程式進行操練。

理解了這個程式並不表明掌握了這個程式,只有在操練一個相近的程式時,才知道你到底理解了多少,掌握了多少