對於一個有追求的程序員來講必須讀源碼,固然閱讀源碼是一件使人頭疼的事。閱讀別人的代碼遠比本身寫代碼要難。Linus 是Linux的早期做者,一句影響深遠的話是「Read The Fucking Source Code」(RTFSC),這句話既體現了閱讀源碼的重要性,也說明了閱讀源碼對於大牛來講也是一件使人頭疼的事。閱讀源碼對於中級工程師尤其重要,經過代碼能夠看大牛的實現途徑,方法,思想,若是你源碼看多了,最終你會發現一樣的效果能夠有多種實現方式,具體的實現方式就和本身的編碼風格有關係。對於一箇中級android開發者須要閱讀什麼源碼,android系統源碼?第三方開源庫源碼?完整項目源碼?這些源碼都是大牛寫的,學習價值很大,那咱們應該學習哪個?首先咱們要明白咱們的目的:短期提高咱們編碼技能,但願在工做能體現出來。從這個角度來看,閱讀android系統源碼的價值就不是很高。因此對於一箇中級工程師來講,要把第三方開源庫和完整項目做爲主要對象。下面我就講一下看第三方開源庫和完整項目源碼的一些方法和技巧。android
如何高效的看fuck source code,首先須要解決的是咱們用什麼看,我推薦看第三方開源庫使用sublime text,看完整項目用android studio。第三方開源庫無須編譯,直接看代碼,使用sublime text代碼高亮整潔,看的很爽。效果以下:git
也許你剛開始不適應,不要擔憂,用不了幾天你就離不開它了。那問題又來了,看代碼我習慣了這種高亮風格,再也沒法忍受android studio的黑白風格的代碼了。不要緊,很簡單,只要設置一下,android studio就能夠和sublime text 達到一樣的效果。先來看看設置後的效果吧。程序員
只需下載jar包,導入android studio便可。設置方式詳見README文件。github
若是你是一個閱讀源碼的新手,那我建議你首先找一些代碼量少的,本身感興趣的來看。能夠參考我以前寫過的一片文章2016年最值得學習的五大開源項目(這些都是完整的項目,若是想看一些第三方開源庫,能夠來這裏開源項目解析)數據庫
如何閱讀第三方開源庫android-studio
選擇一些當下熱門、學習價值高的第三方開源庫,我認爲最值得學習的是Volly,開源項目解析中也有對Volly的解析。網絡
首先下載源碼,而後在網上找一些源碼解析文章來看看,不要忘記,咱們的宗旨之一「高效」,這樣就能夠最快的對項目原理有一個大致的瞭解,再去看源碼具體實現就很快了。這裏很重要的一點是如何找一些有價值的學習資料,咱們最常有的就是搜索引擎,今天就主要說說如何選擇搜索引擎,之後有機會再寫寫如何篩選有價值的學習資料。搜索引擎:Google>bing>baidu.其實我不想黑百度,由於我很想去百度,既然如今還不是一名百度工程師,就說一下事實吧。Google是把你想要的,最有價值的東西呈如今你面前,而且他作到了。Google會把符合搜索結果、點擊量最大的、最有價值的東西排在首頁,因此你很輕鬆就會找到你想要的東西(若是你上不了Google能夠點這裏)。bing和Google差很少,想法同樣,可是和Google相比,bing搜索到的有價值結果不是不少,沒有Google的理想,還有一些來着百度知道。百度呢,第一眼看到的是廣告,一些內容來着百度知道,呈現的搜索結果不是按價值排序,你須要本身慢慢找。因此首推Google。架構
再你看了一些解析文章以後,理解了項目原理,對大部分類的功能有了必定的瞭解,再來看源碼的具體實現方式。在閱讀的過程當中總會遇到一些看不懂的代碼,你能夠先放一放,繼續往下看。這樣反覆幾遍,就會對代碼的理解不斷加深。我認爲閱讀第三方開源庫主要是學習設計思想。mvc
如何閱讀開源完整項目app
毋庸置疑使用android studio閱讀完整項目,很高效。閱讀完整項目涉及的東西比較多,項目的架構不一樣,使用的第三方庫不一樣,這就要求須要對項目中本身不熟悉的東西進行學習,也不須要都弄懂了再去看項目,邊看邊學,遇到不會的就去搜資料學習,這樣最快了。
第一步下載項目,在真機或虛擬機上運行,最直觀的體驗app的功能。而後看app的架構,mvc、mvp、mvvp,目前項目中mvvp用的比較少。而後打開build.gradle文件看看項目用了哪些網絡請求庫、圖片加載庫、其餘庫。若是有不熟悉的,上網找一些文章學習一下。而後就打開manifasts文件找的入口activity,順藤摸瓜往下看。一樣,不懂的地方放過。看完一遍,再進行下一步,不要期望一遍就能夠搞定。這裏給你們推薦一個特別值得學習的項目LookLook(Github地址:https://github.com/xinghongfe...):mvp架構,RxJava + Retrofit+okhttp,glide。項目結構清晰,代碼量不是很大,學習價值高。方法基本也就這麼個方法,剩下就是跟者本身的感受走。
若是你的項目看多了以後你會發現每一個項目能夠分爲如下幾個模塊:
UI(activity ,fragment)
adapter
數據實體
第三方開源庫的使用,網絡、圖片、其餘工具
一些工具類
項目配置類
自定義View
其餘(數據庫,activity、fragment的基類,API等)
任何事情均可以熟能生巧,在看了一些開源項目後,本身最好開發一個。看項目源碼是一個很費腦子的事情,不能急於求成,我以前就有點着急,看了不少項目,高強度的進行了20多天後,精力消耗很大,掉頭髮很嚴重,大腦嚴重勞累過分,休息了一個星期才緩解過來。因此建議你們制定一個合理的學習時間,不要讓本身強度太大。
最後的感受就是,看似難以想象的事情,只要本身靜下心來,循序漸進,最後發現都不過如此嘛。小夥伴們開始 趕快開始Read The Fucking Source Code 吧。