解讀:如何更有效地學(xué)習(xí)開源項(xiàng)目的代碼?

聽到過有這樣一句話,“學(xué)習(xí)開源,就盡可能的在代碼里找答案,而不是在代碼之外去找答案,那些都是二手的,而且很可能是不準(zhǔn)確的。”


這里小編介紹兩種關(guān)于有效學(xué)習(xí)開源項(xiàng)目代碼的習(xí)慣:

一:

1.先去查找和閱讀與該項(xiàng)目的博客和資料,通過google能找到某個(gè)項(xiàng)目大體介紹的博客,快速瀏覽一下,對(duì)這個(gè)項(xiàng)目的功能、目的、基本使用有基本的了解。

2.閱讀項(xiàng)目文檔,重點(diǎn)查閱Getting

started、Example之類的文檔,從中了解如何下載、安裝、以及使用該項(xiàng)目所需要的基本知識(shí)。

3.如果該項(xiàng)目有已經(jīng)完成的example工程,先嘗試按照開始文檔的步驟,運(yùn)行example,若果遇到問題,則要嘗試在項(xiàng)目的FAQ等文檔中查找答案;其次,將問題作為搜索的關(guān)鍵詞搜索,尋找相關(guān)的解決辦法;最后,還可將問題提交到項(xiàng)目的郵件列表,征求集體的意見。注意:在沒有成功運(yùn)行example之前,不要嘗試修改example。

4.在運(yùn)行了第一個(gè)example之后,根據(jù)自身的理解去嘗試需要修改example,測(cè)試高級(jí)功能等。

5.在掌握基本使用功能后,則開始深入的了解該項(xiàng)目。比如:項(xiàng)目的配置管理、高級(jí)功能等。

6.如果在允許的范圍內(nèi),嘗試從源碼上構(gòu)建該項(xiàng)目。一般開源項(xiàng)目都會(huì)提供一份構(gòu)建指南,介紹如何搭建開發(fā)、調(diào)試和構(gòu)建的環(huán)境。

7.如可以根據(jù)自身興趣,嘗試閱讀源碼:

(1)閱讀源碼之前,查看該項(xiàng)目是否提供架構(gòu)和設(shè)計(jì)文檔,閱讀這些文檔可以了解該項(xiàng)目的大體設(shè)計(jì)和結(jié)構(gòu),則讀源碼的時(shí)候不會(huì)無從下手。

(2)在閱讀源碼時(shí)要抓住主干,嘗試?yán)砬逡淮握_\(yùn)行的代碼的調(diào)用路徑,這可以通過debug來觀察運(yùn)行時(shí)的變量和行為。同時(shí)在修改源碼時(shí),加入日志和打印可以更好的理解源碼。

(3)畫圖,理清主干后,可以將整個(gè)流程畫成流程圖或者是標(biāo)準(zhǔn)的UML圖,幫助記憶以及下一步的閱讀。

(4)以興趣為主,挑選感興趣的“枝葉”代碼去閱讀。

(5)在閱讀程序源碼的時(shí)候,重視單元測(cè)試,嘗試來運(yùn)行單元測(cè)試,基本上一個(gè)好的單元測(cè)試會(huì)將該代碼的功能和邊界描述清晰。

(7)在熟悉源碼后,發(fā)現(xiàn)有可以改進(jìn)的地方,可以向該項(xiàng)目的開發(fā)者提出改進(jìn)的意見或者issue,可以進(jìn)一步幫住開發(fā)者修復(fù)和實(shí)現(xiàn),參與該項(xiàng)目的發(fā)展。

8.通常在閱讀文檔和源碼之后,在對(duì)該項(xiàng)目有比較深入的了解時(shí),還可以進(jìn)一步在廣度和深度之間權(quán)衡。

第二種方法和第一種類似,但有有點(diǎn)不同下面看看第二種方法:

二:

1反復(fù)地操作軟件,熟悉軟件的組成文件以及軟件功能,同時(shí)注意IE地址欄內(nèi)的地址變化。

2存放數(shù)據(jù)的XML文件或者打開數(shù)據(jù)庫(kù)文件,參照數(shù)據(jù)字典,了解各個(gè)表和字段的數(shù)據(jù)含意,若沒有數(shù)據(jù)字典,就利用運(yùn)行軟件,進(jìn)行數(shù)據(jù)的輸入,參照輸入的數(shù)據(jù),了解各個(gè)表和字段的數(shù)據(jù)含意。

3使用Visio進(jìn)行反向工程,抽出類圖。

4研究“類”之間的關(guān)系,注釋各個(gè)類的屬性以及方法,了解程序的整體框架。

5另外去開一個(gè)項(xiàng)目,按照軟件開發(fā)的流程,將代碼分段復(fù)制進(jìn)新的項(xiàng)目,進(jìn)行編譯調(diào)試。

因酷教育軟件分享:http://inxedu.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,939評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,539評(píng)論 19 139
  • 太長(zhǎng)了,還是轉(zhuǎn)載吧...今天在看博客的時(shí)候,無意中發(fā)現(xiàn)了@Trinea在GitHub上的一個(gè)項(xiàng)目Android開源...
    龐哈哈哈12138閱讀 20,390評(píng)論 3 283
  • 我決心開始堅(jiān)持每天寫一篇文章,到現(xiàn)在已經(jīng)是第十篇了,“路漫漫其修遠(yuǎn)兮,吾將上下而求索”。 我通常會(huì)在晚上寫文章,但...
    西達(dá)雅閱讀 673評(píng)論 25 10
  • 我的丈夫 / 汪莉 1990年回茂名陪奶奶父母親過春節(jié),爸爸的三個(gè)同事來家里做客,周群也來了。 爸爸去哪都喜...
    汪莉_4c55閱讀 537評(píng)論 12 3

友情鏈接更多精彩內(nèi)容