引言
當(dāng)今軟件的開源,已形成一種潮流,龐大的開源軟件,是一個(gè)巨大的寶藏。因此,作為一個(gè)軟件開發(fā)人員,如果希望在這條路上持續(xù)耕耘,必須要持續(xù)學(xué)習(xí)新知識(shí)(不僅僅是為了一份工作,而且可以從中獲得很多樂趣和成就感),而開源軟件,就是非常好的學(xué)習(xí)途徑。
為什么學(xué)習(xí)使用開源項(xiàng)目
- 可以了解當(dāng)今業(yè)界某個(gè)領(lǐng)域的問題的解決方案,而這個(gè)解決方案往往不止一種,可以大大擴(kuò)展我們的視野。
- 可以了解某種語言的發(fā)展趨勢(shì),是一個(gè)不錯(cuò)的獲取語言最新變更的途徑。
- 因?yàn)閮?yōu)秀的開源項(xiàng)目,往往有業(yè)界一些頂尖的牛人參與,能夠?qū)嶋H看到出自他們的作品,機(jī)會(huì)非常難得。
- 一些實(shí)現(xiàn)手法的學(xué)習(xí)。相信很多人可能會(huì)有過類似的感受,就是設(shè)計(jì)出來的軟件,不能夠優(yōu)雅地使用當(dāng)前的編程范式實(shí)現(xiàn)出來,要么實(shí)現(xiàn)的冗余笨拙,要么難以理解。通過開源項(xiàng)目,多看看別人是怎么寫的,有助于提升自己的軟件實(shí)現(xiàn)能力。
學(xué)習(xí)開源項(xiàng)目
- 閱讀項(xiàng)目文檔,如 getting started,example 等,學(xué)習(xí)如何開源項(xiàng)目下載、安裝和基本使用方法;
- 如果項(xiàng)目提供 example 工程,嘗試運(yùn)行,解決運(yùn)行過程中遇到的問題;
- 嘗試根據(jù)理解和需要修改 example,通過調(diào)整各種參數(shù)觀察表現(xiàn)結(jié)果,驗(yàn)證我們對(duì)項(xiàng)目的猜想和假設(shè),加深對(duì)項(xiàng)目的認(rèn)知;
- 在了解基本使用后,需要根據(jù)用戶指南深入了解項(xiàng)目,例如項(xiàng)目的配置管理,高級(jí)功能及最佳實(shí)踐;
- 如果時(shí)間允許,嘗試從源碼構(gòu)建項(xiàng)目,根據(jù)項(xiàng)目構(gòu)建指南,搭建一個(gè)可以用于開發(fā)、調(diào)試和驗(yàn)證的環(huán)境。
閱讀開源項(xiàng)目源碼
- 閱讀源代碼的第一步為抓住干,嘗試?yán)砬宄a運(yùn)行的調(diào)用路徑,通過 debug 來觀察運(yùn)行時(shí)的變量和行為,加入日志和打印可以更好的理解代碼,大部分的細(xì)節(jié)需要在調(diào)試中理解;
- 畫邏輯關(guān)系圖幫助理解源碼,將代碼主干畫成流程圖或 UML 圖,幫助記憶和下一步閱讀,大幅度提高對(duì)框架的理解速度;
- 挑感興趣的枝干代碼來閱讀,深入實(shí)現(xiàn)細(xì)節(jié),包括使用的庫(kù)、設(shè)計(jì)模式等;
- 重視單元測(cè)試,加深對(duì)程序模塊功能的理解;
- 發(fā)現(xiàn)有可改進(jìn)的地方,對(duì)項(xiàng)目開發(fā)者提出改進(jìn)意見或者 Issue。
- 寫筆記與寫文章,通過寫筆記記錄學(xué)習(xí)的收獲和經(jīng)驗(yàn),供以后使用,通過寫文章對(duì)于問題進(jìn)行深入和系統(tǒng)的思考。
常見的開源代碼托管平臺(tái)
其它國(guó)內(nèi)的一些專有的平臺(tái)如:
華為開源云
阿里云
百度效率云
騰訊coding
另外一些不同的開源平臺(tái):
sourceforge