如何快速自學開源項目?試試我的訣竅
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
如何快速學習項目?1、初步了解項目打開一個 GitHub 上的開源項目后,第一件事就是去看項目的 README.md 介紹文檔,可以速覽一遍看看有沒有幫助你學習的內(nèi)容,比如技術(shù)選型、功能介紹、如何快速啟動項目、架構(gòu)設(shè)計、注意事項等等。 以 MallChat 聊天室為例:https://github.com/zongzibinbin/MallChat ,項目介紹文檔中包含對核心功能的介紹,可以看看有沒有自己感興趣的功能:
如果是公司內(nèi)部的項目、或者比較成熟的開源項目,還會有 Wiki 文檔,往往對項目的介紹會更加詳細,但暫時不用通篇閱讀,關(guān)注 “快速啟動項目” 或者 “項目結(jié)構(gòu)介紹” 的部分即可。 像我如果決心要學一個新的項目,除了 GitHub 官方文檔外,還會在網(wǎng)上搜集一些相關(guān)資料,整理到自己的文檔中,便于后續(xù)學習時能快速找到。
2、了解項目結(jié)構(gòu)看完項目介紹文檔后,建議先從上帝視角整體了解項目的結(jié)構(gòu),比如項目分為哪些模塊、每個模塊大致有哪些文件、文件命名規(guī)則如何等等,但不用進一步理解模塊(或目錄)內(nèi)部的組織和實現(xiàn)方式。尤其對于復雜的微服務(wù)項目來說,這樣做可以快速幫你定位到學習重點。 大多數(shù)情況下,大家應(yīng)該都是把項目代碼下載到本地來學習。但如果你只是為了快速了解項目,并不打算深入學習,其實有更高效的方式。 比如在 GitHub 倉庫的主頁按
對于有一定經(jīng)驗的開發(fā)者,一般會先查找關(guān)鍵文件,比如前端項目找 舉個例子,看到 aop 依賴,就知道項目用到了切面;看到 freemarker 依賴,就知道項目資源目錄中會有 FTL 模板文件;看到 Redisson,就知道會有初始化 Redisson 客戶端的配置類,這些就是積累經(jīng)驗的重要性了。
3、運行項目如果要正式學習項目,先不要急著去閱讀源碼,而是要先把項目在本地成功運行,便于后續(xù)邊調(diào)試邊學習。 運行項目的步驟很簡單,用 雖然步驟很簡單,但現(xiàn)實往往是大家把項目拉到本地后各種各樣的報錯信息,所以運行項目時要格外注重以下幾點:
遇到報錯是很正常的,因為不是所有的開源項目都做到了 “易用易上手”,遇到報錯時,我們只要定位到關(guān)鍵報錯信息,然后順藤摸瓜找到對應(yīng)的文件去修改即可。實在搞不定,這不還有搜索引擎和 AI 么? 這里分享一個常用的快速運行項目的技巧。有的時候項目用到了很多依賴(比如 MallChat 中用了 MinIO、RocketMQ 等),但是我們本地并沒有安裝這些依賴,導致項目無法啟動。如下圖,因為我沒安裝 RocketMQ,導致啟動時連接 RocketMQ 報錯:
要想啟動項目,傳統(tǒng)方法就是自己安裝所有依賴,但如果項目只有一個不起眼的位置用到了某個依賴,其實花時間去安裝性價比不高。這時,我們可以用一種更簡單的方法,直接禁用掉用到這些依賴的 Bean 加載。 比如在啟動類加上
但是,禁用了 RocketMQ Bean 的初始化后,如果有代碼用到了這個 Bean,就會因為缺失依賴的 Bean 而報錯。這種情況下,可以使用 public class MQProducer {
4、了解業(yè)務(wù)流程和庫表設(shè)計在閱讀代碼學習前,最好先整體了解項目的業(yè)務(wù)流程和庫表設(shè)計,有助于明確后續(xù)閱讀源碼時的順序和學習方向。 核心業(yè)務(wù)流程可以通過閱讀文檔、或者自己體驗系統(tǒng)的方式來了解。比如對于聊天室系統(tǒng),核心業(yè)務(wù)流程就是:用戶登錄 => 用戶上線 => 添加好友 => 創(chuàng)建房間 => 加入房間 => 發(fā)送消息 => 消息審核 => 其他用戶接收消息 => 回復消息。 了解項目的庫表設(shè)計也是有技巧的,比起直接看 SQL 文件,一般我會先在本地初始化數(shù)據(jù)庫,然后通過可視化圖表來查看。
如圖,表之間的關(guān)系一目了然!比如房間又分為單聊和群聊,一個房間內(nèi)有多個會話和消息:
5、閱讀代碼剛開始閱讀代碼時,不要急著一行代碼一行代碼地按照順序去閱讀,而是要先整體理解每個目錄的 作用和目錄內(nèi)部的文件組織形式 ,但暫時不必深入理解具體的實現(xiàn)方式。 舉個例子,對于 MallChat 項目,你要先能明確紅字中的信息:
查看某個目錄內(nèi)部的文件組織形式時,有一個小技巧??梢灾苯釉?IDEA 中右鍵點擊某個包,查看 UML 結(jié)構(gòu)圖:
通過結(jié)構(gòu)圖,我們可以速覽類之間的關(guān)系。比如下圖中,工廠創(chuàng)建策略、兩個具體策略繼承了抽象策略類:
之后,你就可以找到感興趣的項目核心功能模塊進行學習了,分享幾個學習技巧: 1)如果想快速學習某個功能的實現(xiàn),建議是通過文檔等方式 先了解業(yè)務(wù)流程 ,再學習源碼。學習源碼時,建議使用 Debug 模式啟動項目,通過接口文檔(或前端)發(fā)送請求,完整地分析一個請求的處理流程。 可以通過 IDEA 的 Endpoints 功能快速查看項目中的接口,并定位到源碼:
2)如果想快速了解單個文件的核心結(jié)構(gòu)(比如方法和屬性),可以使用 IDEA 的
3)可以通過 Call Hierarchy 功能查看方法、類或變量在程序中被調(diào)用的層次結(jié)構(gòu)和關(guān)系。比如下圖我查看了
4)可以通過 Find Usages 功能快速查看一個方法或者類在項目中所有的使用位置:
5)當然,對于復雜的功能,單獨看代碼可能是理解不了的,這時就需要搭配文檔和代碼注釋了。什么?沒有文檔?!不寫注釋?!那就直接通過 Git 版本控制工具找到原作者去詢問吧。
6、理解項目開發(fā)流程和規(guī)范在你熟悉了項目后,就可以嘗試參與開發(fā)了。可以先通過 閱讀項目的貢獻指南或開發(fā)文檔 來理解項目的開發(fā)流程、開發(fā)規(guī)范等,跟項目的其他開發(fā)者保持一致。如果有疑惑,可以看看別人的代碼中是怎么做的,有樣學樣就行;實在不確定的話,最好是提前詢問,不要提交一堆不符合規(guī)范的代碼,再被別人打回來,浪費彼此的時間。
7、參與項目最后,學習開源項目最好的方式就是親身參與項目的開發(fā),這也是我一直建議大家做的,不僅能提升能力、也能給自己的簡歷加分。 其實參與開源項目沒有那么困難,可以先在項目的 Issues 部分查看別人反饋的 Bug,并且?guī)兔π迯停煜ふ麄€參與開源項目的流程。之后還可以 跟作者溝通 并嘗試添加新功能、進行優(yōu)化等。 如果想讓你貢獻的代碼更快被作者接受,就一定要做好溝通!因為我自己也有很多開源項目,也有小伙伴給我貢獻過代碼,但不可能所有的代碼都接受。因為每個人關(guān)于項目的想法是不同的,在沒有跟作者交流的情況下,可能你做的功能對項目并沒有幫助、超出了項目的規(guī)劃,反而會讓項目更加復雜。團隊開發(fā)也是一樣,大家要一起評審需求,確保需求是有價值的、和項目定位是匹配的,而不是誰想加功能就加功能。 轉(zhuǎn)自https://www.cnblogs.com/yupi/p/18362486 該文章在 2024/11/13 9:04:44 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |