Gitee 上的項(xiàng)目種類(lèi)和數(shù)量繁多,作為新手的話,要選擇適合自己的項(xiàng)目進(jìn)行學(xué)習(xí)。
以實(shí)際項(xiàng)目為導(dǎo)向,可以是真正的工程項(xiàng)目,也可以是生活中實(shí)用的小項(xiàng)目,根據(jù)實(shí)際項(xiàng)目可以有方向性的選擇開(kāi)源項(xiàng)目;
調(diào)查實(shí)際項(xiàng)目相關(guān)領(lǐng)域的常用開(kāi)源項(xiàng)目,可以參考項(xiàng)目的活躍度(Gitee 指數(shù)),貢獻(xiàn)者數(shù)量,Star 數(shù)等縮小選擇范圍,學(xué)習(xí)過(guò)程可以獲取更加豐富的資料;
通過(guò)項(xiàng)目的 README.md 了解項(xiàng)目的大體情況,再進(jìn)行研究和選擇。
領(lǐng)域知識(shí)儲(chǔ)備
開(kāi)源項(xiàng)目往往是以領(lǐng)域知識(shí)為背景進(jìn)行開(kāi)發(fā)的,了解領(lǐng)域知識(shí)中基本概念、原理、算法,必然會(huì)降低閱讀理解源碼的難度。
善用學(xué)習(xí)工具
方便查找的 IDE 工具使源碼閱讀過(guò)程事半功倍,閱讀源碼要搞清楚函數(shù)之間的調(diào)用關(guān)系,IDE 擁有代碼靜態(tài)分析功能和便捷的斷點(diǎn)調(diào)試功能,可以幫助你快速查看源碼調(diào)用關(guān)系,整體了解源碼的邏輯關(guān)系。類(lèi)圖工具,方便梳理、記錄和可視化項(xiàng)目調(diào)用的邏輯關(guān)系,加快深入學(xué)習(xí)。
了解開(kāi)源項(xiàng)目
查找和閱讀該項(xiàng)目的官網(wǎng)、相關(guān)博客和資料,對(duì)項(xiàng)目的目的、功能、基本使用和代碼組織結(jié)構(gòu)進(jìn)行大概的了解,進(jìn)一步明確學(xué)習(xí)內(nèi)容和目標(biāo)。
讀源代碼的過(guò)程一般分為兩步,首先是學(xué)習(xí)使用項(xiàng)目,對(duì)項(xiàng)目功能、運(yùn)行環(huán)境和模塊結(jié)構(gòu)有基本的認(rèn)識(shí),搭建可以用于開(kāi)發(fā)、調(diào)試和驗(yàn)證的環(huán)境;然后是閱讀源代碼,在運(yùn)行環(huán)境中調(diào)試、梳理、深入理解代碼細(xì)節(jié),并嘗試參與開(kāi)源項(xiàng)目。
閱讀項(xiàng)目文檔,如 getting started,example 等,學(xué)習(xí)如何開(kāi)源項(xiàng)目下載、安裝和基本使用方法;
如果項(xiàng)目提供 example 工程或者測(cè)試用例,嘗試運(yùn)行,解決運(yùn)行過(guò)程中遇到的問(wèn)題;
嘗試根據(jù)理解和需要修改 example,通過(guò)調(diào)整各種參數(shù)觀察表現(xiàn)結(jié)果,驗(yàn)證我們對(duì)項(xiàng)目的猜想和假設(shè),加深對(duì)項(xiàng)目的認(rèn)知;
在了解基本使用后,需要根據(jù)用戶(hù)指南深入了解項(xiàng)目,例如項(xiàng)目的配置管理,高級(jí)功能及最佳實(shí)踐;
如果時(shí)間允許,嘗試從源碼構(gòu)建項(xiàng)目,根據(jù)項(xiàng)目構(gòu)建指南,搭建一個(gè)可以用于開(kāi)發(fā)、調(diào)試和驗(yàn)證的環(huán)境。
閱讀源代碼的第一步為抓主干,嘗試?yán)砬宄a運(yùn)行的調(diào)用路徑,通過(guò) Debug 來(lái)觀察運(yùn)行時(shí)的變量和行為,加入日志和打印可以更好的理解代碼,大部分的細(xì)節(jié)需要在調(diào)試中理解;
畫(huà)邏輯關(guān)系圖幫助理解源碼,將代碼主干畫(huà)成流程圖或 UML 圖 (opens new window),幫助記憶和下一步閱讀,大幅度提高對(duì)框架的理解速度;
挑感興趣的枝干代碼來(lái)閱讀,深入實(shí)現(xiàn)細(xì)節(jié),包括使用的庫(kù)、設(shè)計(jì)模式等;
重視單元測(cè)試,加深對(duì)程序模塊功能的理解;
發(fā)現(xiàn)有可改進(jìn)的地方,對(duì)項(xiàng)目開(kāi)發(fā)者提出改進(jìn)意見(jiàn)或者 Issue。
寫(xiě)筆記與寫(xiě)文章,通過(guò)寫(xiě)筆記記錄學(xué)習(xí)的收獲和經(jīng)驗(yàn),供以后使用,通過(guò)寫(xiě)文章對(duì)于問(wèn)題進(jìn)行深入和系統(tǒng)的思考。
聯(lián)系客服