欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

如何快速自學開源項目?試試我的訣竅

freeflydom
2024年11月13日 9:4 本文熱度 622

如何快速學習項目?

1、初步了解項目

打開一個 GitHub 上的開源項目后,第一件事就是去看項目的 README.md 介紹文檔,可以速覽一遍看看有沒有幫助你學習的內容,比如技術選型、功能介紹、如何快速啟動項目、架構設計、注意事項等等。

以 MallChat 聊天室為例:https://github.com/zongzibinbin/MallChat ,項目介紹文檔中包含對核心功能的介紹,可以看看有沒有自己感興趣的功能:

如果是公司內部的項目、或者比較成熟的開源項目,還會有 Wiki 文檔,往往對項目的介紹會更加詳細,但暫時不用通篇閱讀,關注 “快速啟動項目” 或者 “項目結構介紹” 的部分即可。

像我如果決心要學一個新的項目,除了 GitHub 官方文檔外,還會在網上搜集一些相關資料,整理到自己的文檔中,便于后續學習時能快速找到。

 

2、了解項目結構

看完項目介紹文檔后,建議先從上帝視角整體了解項目的結構,比如項目分為哪些模塊、每個模塊大致有哪些文件、文件命名規則如何等等,但不用進一步理解模塊(或目錄)內部的組織和實現方式。尤其對于復雜的微服務項目來說,這樣做可以快速幫你定位到學習重點。

大多數情況下,大家應該都是把項目代碼下載到本地來學習。但如果你只是為了快速了解項目,并不打算深入學習,其實有更高效的方式。

比如在 GitHub 倉庫的主頁按  句號鍵,就能快速進入網頁版的代碼編輯器,跟本地瀏覽項目的體驗幾乎一致:

對于有一定經驗的開發者,一般會先查找關鍵文件,比如前端項目找 package.json(Node.js)、Java 項目找 pom.xml(Maven)或 build.gradle(Gradle)、Python 項目找 requirements.txt 或 setup.py 等,這些文件通常包含項目依賴和配置信息。如果項目是比較規范的,一般通過依賴和配置信息就能快速理解項目結構了。

舉個例子,看到 aop 依賴,就知道項目用到了切面;看到 freemarker 依賴,就知道項目資源目錄中會有 FTL 模板文件;看到 Redisson,就知道會有初始化 Redisson 客戶端的配置類,這些就是積累經驗的重要性了。

 

3、運行項目

如果要正式學習項目,先不要急著去閱讀源碼,而是要先把項目在本地成功運行,便于后續邊調試邊學習。

運行項目的步驟很簡單,用 git clone 命令將項目復制到你的電腦,然后根據 README 文件或其他文檔中的指示,安裝項目的必要依賴項、修改本地運行配置、并最終運行項目。

雖然步驟很簡單,但現實往往是大家把項目拉到本地后各種各樣的報錯信息,所以運行項目時要格外注重以下幾點:

  1. 確保自己系統環境和項目要求一致,比如注意下前端 Node.js 和后端 JDK 版本要求。

  2. 確保項目依賴的版本和項目要求一致,比如后端依賴的 MySQL 和 Redis 版本。對于這種主流的技術,一般情況下只要別用太新的版本,基本不會影響項目的運行。

  3. 修改本地運行配置為自己的,比如數據庫賬號、密碼等,而且要格外注意不要讀取錯了配置文件,否則可能改了半天還在疑惑 “怎么配置沒生效呢”?

遇到報錯是很正常的,因為不是所有的開源項目都做到了 “易用易上手”,遇到報錯時,我們只要定位到關鍵報錯信息,然后順藤摸瓜找到對應的文件去修改即可。實在搞不定,這不還有搜索引擎和 AI 么?

這里分享一個常用的快速運行項目的技巧。有的時候項目用到了很多依賴(比如 MallChat 中用了 MinIO、RocketMQ 等),但是我們本地并沒有安裝這些依賴,導致項目無法啟動。如下圖,因為我沒安裝 RocketMQ,導致啟動時連接 RocketMQ 報錯:

要想啟動項目,傳統方法就是自己安裝所有依賴,但如果項目只有一個不起眼的位置用到了某個依賴,其實花時間去安裝性價比不高。這時,我們可以用一種更簡單的方法,直接禁用掉用到這些依賴的 Bean 加載。

比如在啟動類加上 exclude ,就能快速禁用某些依賴的自動加載,示例代碼如下:

@SpringBootApplication(exclude = {RocketMQAutoConfiguration.class})

但是,禁用了 RocketMQ Bean 的初始化后,如果有代碼用到了這個 Bean,就會因為缺失依賴的 Bean 而報錯。這種情況下,可以使用 @Lazy 注解對 Bean 進行懶加載,用到的時候才會加載,啟動項目時就不會報錯了~ 示例代碼如下:

public class MQProducer {
   @Autowired
   @Lazy
   private RocketMQTemplate rocketMQTemplate;
}

 

4、了解業務流程和庫表設計

在閱讀代碼學習前,最好先整體了解項目的業務流程和庫表設計,有助于明確后續閱讀源碼時的順序和學習方向。

核心業務流程可以通過閱讀文檔、或者自己體驗系統的方式來了解。比如對于聊天室系統,核心業務流程就是:用戶登錄 => 用戶上線 => 添加好友 => 創建房間 => 加入房間 => 發送消息 => 消息審核 => 其他用戶接收消息 => 回復消息。

了解項目的庫表設計也是有技巧的,比起直接看 SQL 文件,一般我會先在本地初始化數據庫,然后通過可視化圖表來查看。

如圖,表之間的關系一目了然!比如房間又分為單聊和群聊,一個房間內有多個會話和消息:

 

5、閱讀代碼

剛開始閱讀代碼時,不要急著一行代碼一行代碼地按照順序去閱讀,而是要先整體理解每個目錄的 作用和目錄內部的文件組織形式 ,但暫時不必深入理解具體的實現方式。

舉個例子,對于 MallChat 項目,你要先能明確紅字中的信息:

查看某個目錄內部的文件組織形式時,有一個小技巧??梢灾苯釉?IDEA 中右鍵點擊某個包,查看 UML 結構圖:

通過結構圖,我們可以速覽類之間的關系。比如下圖中,工廠創建策略、兩個具體策略繼承了抽象策略類:

之后,你就可以找到感興趣的項目核心功能模塊進行學習了,分享幾個學習技巧:

1)如果想快速學習某個功能的實現,建議是通過文檔等方式 先了解業務流程 ,再學習源碼。學習源碼時,建議使用 Debug 模式啟動項目,通過接口文檔(或前端)發送請求,完整地分析一個請求的處理流程。

可以通過 IDEA 的 Endpoints 功能快速查看項目中的接口,并定位到源碼:

2)如果想快速了解單個文件的核心結構(比如方法和屬性),可以使用 IDEA 的 Structure 功能,如圖:

3)可以通過 Call Hierarchy 功能查看方法、類或變量在程序中被調用的層次結構和關系。比如下圖我查看了 doMark 方法的調用者視圖,可以看到哪些方法調用了它,便于快速理解代碼之間的交互,不用自己一層一層點進去看了。

4)可以通過 Find Usages 功能快速查看一個方法或者類在項目中所有的使用位置:

5)當然,對于復雜的功能,單獨看代碼可能是理解不了的,這時就需要搭配文檔和代碼注釋了。什么?沒有文檔?!不寫注釋?!那就直接通過 Git 版本控制工具找到原作者去詢問吧。

 

6、理解項目開發流程和規范

在你熟悉了項目后,就可以嘗試參與開發了??梢韵韧ㄟ^ 閱讀項目的貢獻指南或開發文檔 來理解項目的開發流程、開發規范等,跟項目的其他開發者保持一致。如果有疑惑,可以看看別人的代碼中是怎么做的,有樣學樣就行;實在不確定的話,最好是提前詢問,不要提交一堆不符合規范的代碼,再被別人打回來,浪費彼此的時間。

 

7、參與項目

最后,學習開源項目最好的方式就是親身參與項目的開發,這也是我一直建議大家做的,不僅能提升能力、也能給自己的簡歷加分。

其實參與開源項目沒有那么困難,可以先在項目的 Issues 部分查看別人反饋的 Bug,并且幫忙修復,熟悉整個參與開源項目的流程。之后還可以 跟作者溝通 并嘗試添加新功能、進行優化等。

如果想讓你貢獻的代碼更快被作者接受,就一定要做好溝通!因為我自己也有很多開源項目,也有小伙伴給我貢獻過代碼,但不可能所有的代碼都接受。因為每個人關于項目的想法是不同的,在沒有跟作者交流的情況下,可能你做的功能對項目并沒有幫助、超出了項目的規劃,反而會讓項目更加復雜。團隊開發也是一樣,大家要一起評審需求,確保需求是有價值的、和項目定位是匹配的,而不是誰想加功能就加功能。

轉自https://www.cnblogs.com/yupi/p/18362486


該文章在 2024/11/13 9:04:44 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved