如何熟悉一個開源專案?
你有個任務,需要用到某個開源專案;或者老大交代你一個事情,讓你去了解某個東西。怎麼下手呢?如何開始呢?我的習慣是這樣:
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、通常在閱讀文件和原始碼之後,你能對該專案有比較深入的瞭解了,但是該專案所在領域,你可能還想搜尋相關的專案和資料,看看有沒有其他的更好的專案或者解決方案。在廣度和深度之間權衡。
以上是我個人的一些習慣,我自己也並沒有完全按照這個來,但是按照這個順序,基本上能讓你比較高效地學習和使用某個開源專案。
相關文章
- 如何去參與一個開源專案
- 如何才能運作好一個開源專案?
- 如何找到並快速上手一個開源專案
- 回顧 Web 開發者熟悉的 10 個經典開源專案和工具Web
- 如何發起並運營一個開源專案
- 開源一個文字分析專案
- 企業開源指南:建立一個開源專案
- 如何重構一個過萬Star開源專案—BetterScroll
- 如何為你的開源專案釋出一個版本
- 如何做一個真正牛X的開源專案
- 分享:新入職時,如何快速熟悉一個專案的程式碼
- 怎樣做好一個開源專案
- 開源一個機器學習文字分析專案機器學習
- 一個檔案的開源專案,開啟你的開源之旅
- 企業開源指南:啟動一個開源專案
- 找個開源專案
- 我寫了一個開源專案AlphabetPyAlphabet
- 開源一個線上專案 WeAre-AR相簿
- 記錄一個開源專案排名網站網站
- 手把手教你如何構建一個優秀的開源專案
- 如何選擇一個適合自己的開源專案來閱讀
- 擁抱開源——Linux C/C++程式設計師必須熟悉的開源專案LinuxC++程式設計師
- 如何開始參與開源專案?
- 開源專案推薦:提高研發效率的5個開源專案
- 聊聊第一個開源專案(內網穿透) - CProxy內網穿透
- 一個令人驚豔的ChatGPT專案,開源了!ChatGPT
- PlantUML 是繪製 uml 的一個開源專案
- 我如何用Django開發一個專案Django
- 分享個 golang 開源小專案Golang
- 如何正確使用開源專案?
- 成功運作一個開源專案的 15 個要點
- 如何開始做一個開源專案?他的親身經歷值得參考
- 程式設計師如何選擇並開始一個有價值的開源專案?程式設計師
- 快速熟悉專案程式碼
- [譯]過去一個月最 ? 的 10 個 Swift 開源專案Swift
- 開源一個功能完整的SpringBoot專案框架Spring Boot框架
- 我的第一個開源專案 Kiwis2 MockserverMockServer
- 給你的開源專案加一個綬帶吧