天天看點

學習開源代碼思路(轉帖)

神刀網 轉載來源:http://www.nhs8.com/post/1380/

在網上搜了很久,沒有結果,最後隻好自己寫了~!

轉載保留 神刀網 www.nhs8.com 小弟不才,唯有擠出點墨水!

大家也看到了,很多開源代碼不斷的被挖掘,很多大型企業也往開源項目抛繩子了,為什麼?

因為企業需要發展,開源節流,不僅僅是開源省錢,更因為開源比所帶來的效果是:

1.比封閉工程開發更加節省時間 2.相對比較安全 3.有研究價值,比如linux 簡單的說了下,我們進入主題吧!

關于怎麼學習開源,我梳理一下自己的想法吧!先給個例子,比如我想進入android開發,偶是新手接觸!分國中高水準走吧!

1.去國外google或者國内android開發站點找尋該技術的發展趨勢新聞,培養點興趣,這個很重要,因為關乎你耐着頭皮看着代碼!

2.開始搭建開源環境,直到可以運作程式

3.對于自己的水準,下載下傳一套合乎自己喜歡的程式來看

4.先試着去運作,熟悉各子產品,然後看代碼,看了一遍,把自己的代碼分析注釋也标上去,如果哪個子產品你覺得很有用,可以試着分離出來,當作自己的類庫運作!

5.再讀一遍,你已經大緻知道該代碼的架構,期間涉獵些設計模式的書也行,這時,你要想着,為什麼這個程式可以這樣寫這樣運作?而我可以嗎?帶着這個問題

6.試着去修改源代碼,增加新功能,或者調用API,而不是簡單的漢化,這時你完全可以把它當作你另外的開源項目來做,比如QQ影音就是這樣發展的!如果要改寫,你要有“我可以做得比你的代碼更好!”去改寫。

7.花費了很長時間改寫了很多,調試了很多次,bug出現一堆,沒關系,程式設計正常的,出現問題,g和b一下!遇到自己不懂的,趕緊看書資料!

8.到了這步,相信你自己的開源作品也出來了吧!回想一下,你學到什麼了?寫個開發文檔+程式說明總結下自己的開發路程,你會發現,你提升了!

9.這就是學習開源的結果!當然其他做項目或者搭建系統也類似思維!

以下網上轉載的http://www.javaeye.com/topic/264490

其實我開始讀源碼才幾天時間,但有點心得,就寫出來吧,以期抛磚引玉。

閱讀源代碼的利弊我不談,我隻說該如何讀

首先是積累,當到了一定條件,你會迫不及待的想要去讀,因為你想擁有程式的控制權

我把一份陌生的源代碼比做一個陌生的城市,你将在裡面熟悉道路,

你隻要從一個大的标志開始進入(程式入口點)然後你面臨很多分支,有的分支很明顯的(依靠設計模式,oo,子產品化,結構化,解耦,經驗判斷,當然還有文檔,注釋,别人的源碼分析文章)與其它沒有什麼瓜葛,或者隻有幾個聯系點,其實是一個子產品化功能,就像你知道有一條路通向xx村,你先不管它,知道它通哪裡就可以了,以後再專程通路xx村。

一個設計優良的程式肯定是一個個通過鄉村高速公路連接配接的村落,而不該是交雜在一起的鋼筋水泥,至不濟也該是用圍牆圍起來的一個個小區。

當你知道并熟悉了城市的主幹道之後,整個城市其實已經成竹在胸了

你該學好模式,oo,子產品化,結構化,解耦,接口,多态。。。。

廣義來說就是oo

如果這些你都很牛的時候,有份源碼還讓你讀不懂,直接ctrl+del

寫給初學的人,以讓他們少走不成器的我走過的彎路。

補充一條找源碼分析文章的技巧

在google中輸入關鍵的源碼片段

補充一點經驗:

當你讀過一些子產品之後,看到類似的子產品就會下意識的去猜測該子產品内部的代碼結構,如果你讀的夠多,實踐夠豐富,子產品就了然于胸了。

比如看到一個方法名,根據方法的字面意思就能猜測出該方法的代碼結構,看到類名,就可能會猜測出它該要有什麼方法。

這時讀代碼的速度就快了。

代碼是一個有機體,當你具有把一份源代碼解構成一個有機體的能力的時候,讀代碼其實并不痛苦。可是我還沒有達到我想像的哪個層次。

http://www.oschina.net/bbs/thread/2246

首先,配置運作起來

其次,試着熟悉實作流程

第三,嘗試修改或者增加功能

總結開源項目中使用的架構、設計模式與實作方式。

最難的一點是開發原則的學習抽取。

繼續閱讀