如何熟悉一個開源專案?

莊周夢蝶發表於2015-07-27

  你有個任務,需要用到某個開源專案;或者老大交代你一個事情,讓你去了解某個東西。怎麼下手呢?如何開始呢?我的習慣是這樣:

  1. 首先,查詢和閱讀該專案的部落格和資料,通過google你能找到某個專案大體介紹的部落格,快速閱讀一下就能對專案的目的、功能、基本使用有個大概的瞭解。

  2. 閱讀專案的文件,重點關注類似Getting started、Example之類的文件,從中學習如何下載、安裝、甚至基本使用該專案所需要的知識。

  3. 如果該專案有提供現成的example工程,首先嚐試按照開始文件的介紹執行example,如果執行順利,那麼恭喜你順利開了個好頭;如果遇到問題,首先嚐試在專案的FAQ等文件裡查詢答案,再次,可以將問題(例如異常資訊)當成關鍵詞去搜尋,查詢相關的解決辦法,你遇到了,別人一般也會遇到,熱心的朋友會記錄下解決的過程;最後,可以將問題提交到專案的郵件列表,請大家幫你看看。在沒有成功執行example之前,不要嘗試修改example。

  4. 執行了第一個example之後,嘗試根據你的理解和需要修改example,測試高階功能等。

  5. 在瞭解基本使用後,需要開始深入的瞭解該專案。例如專案的配置管理、高階功能以及最佳實踐。通常一個運作良好的專案會提供一份從淺到深的使用者指南,你並不需要從頭到尾閱讀這份指南,根據時間和興趣,特別是你自己任務的需要,重點閱讀部分章節並做筆記(推薦evernote)。

  6. 如果時間允許,嘗試從原始碼構建該專案。通常開源專案都會提供一份構建指南,指導你如何搭建一個用於開發、除錯和構建的環境。嘗試構建一個版本。

  7. 如果時間允許並且有興趣,可以嘗試閱讀原始碼:

  (1)閱讀原始碼之前,檢視該專案是否提供架構和設計文件,閱讀這些文件可以瞭解該專案的大體設計和結構,讀原始碼的時候不會無從下手。

  (2)閱讀原始碼之前,一定要能構建並執行該專案,有個直觀感受。

  (3)閱讀原始碼的第一步是抓主幹,嘗試理清一次正常執行的程式碼呼叫路徑,這可以通過debug來觀察執行時的變數和行為。修改原始碼加入日誌和列印可以幫助你更好的理解原始碼。

  (4)適當畫圖來幫助你理解原始碼,在理清主幹後,可以將整個流程畫成一張流程圖或者標準的UML圖,幫助記憶和下一步的閱讀。

  (5)挑選感興趣的“枝幹”程式碼來閱讀,比如你對網路通訊感興趣,就閱讀網路層的程式碼,深入到實現細節,如它用了什麼庫,採用了什麼設計模式,為什麼這樣做等。如果可以,debug細節程式碼。

  (6)閱讀原始碼的時候,重視單元測試,嘗試去執行單元測試,基本上一個好的單元測試會將該程式碼的功能和邊界描述清楚。

  (7)在熟悉原始碼後,發現有可以改進的地方,有精力、有意願可以向該專案的開發者提出改進的意見或者issue,甚至幫他修復和實現,參與該專案的發展。

  8. 通常在閱讀文件和原始碼之後,你能對該專案有比較深入的瞭解了,但是該專案所在領域,你可能還想搜尋相關的專案和資料,看看有沒有其他的更好的專案或者解決方案。在廣度和深度之間權衡。

  以上是我個人的一些習慣,我自己也並沒有完全按照這個來,但是按照這個順序,基本上能讓你比較高效地學習和使用某個開源專案。

相關文章