摘要:對(duì)于一個(gè)有追求的程序員來說必須讀源碼,當(dāng)然閱讀源碼是一件令人頭疼的事。和差不多,想法一樣,但是和相比,搜索到的有價(jià)值結(jié)果不是很多,沒有的理想,還有一些來著百度知道。
對(duì)于一個(gè)有追求的程序員來說必須讀源碼,當(dāng)然閱讀源碼是一件令人頭疼的事。閱讀別人的代碼遠(yuǎn)比自己寫代碼要難。Linus 是Linux的早期作者,一句影響深遠(yuǎn)的話是“Read The Fucking Source Code”(RTFSC),這句話既體現(xiàn)了閱讀源碼的重要性,也說明了閱讀源碼對(duì)于大牛來說也是一件令人頭疼的事。閱讀源碼對(duì)于中級(jí)工程師尤為重要,通過代碼可以看大牛的實(shí)現(xiàn)途徑,方法,思想,如果你源碼看多了,最終你會(huì)發(fā)現(xiàn)同樣的效果可以有多種實(shí)現(xiàn)方式,具體的實(shí)現(xiàn)方式就和自己的編碼風(fēng)格有關(guān)系。對(duì)于一個(gè)中級(jí)android開發(fā)者需要閱讀什么源碼,android系統(tǒng)源碼?第三方開源庫(kù)源碼?完整項(xiàng)目源碼?這些源碼都是大牛寫的,學(xué)習(xí)價(jià)值很大,那我們應(yīng)該學(xué)習(xí)哪一個(gè)?首先我們要明白我們的目的:短時(shí)間提升我們編碼技能,希望在工作能體現(xiàn)出來。從這個(gè)角度來看,閱讀android系統(tǒng)源碼的價(jià)值就不是很高。所以對(duì)于一個(gè)中級(jí)工程師來說,要把第三方開源庫(kù)和完整項(xiàng)目作為主要對(duì)象。下面我就講一下看第三方開源庫(kù)和完整項(xiàng)目源碼的一些方法和技巧。
前期準(zhǔn)備:如何高效的看fuck source code,首先需要解決的是我們用什么看,我推薦看第三方開源庫(kù)使用sublime text,看完整項(xiàng)目用android studio。第三方開源庫(kù)無須編譯,直接看代碼,使用sublime text代碼高亮整潔,看的很爽。效果如下:
也許你剛開始不適應(yīng),不要擔(dān)心,用不了幾天你就離不開它了。那問題又來了,看代碼我習(xí)慣了這種高亮風(fēng)格,再也無法忍受android studio的黑白風(fēng)格的代碼了。沒關(guān)系,很簡(jiǎn)單,只要設(shè)置一下,android studio就可以和sublime text 達(dá)到同樣的效果。先來看看設(shè)置后的效果吧。
只需下載jar包,導(dǎo)入android studio即可。設(shè)置方式詳見README文件。
如果你是一個(gè)閱讀源碼的新手,那我建議你首先找一些代碼量少的,自己感興趣的來看??梢詤⒖嘉抑皩戇^的一片文章2016年最值得學(xué)習(xí)的五大開源項(xiàng)目(這些都是完整的項(xiàng)目,如果想看一些第三方開源庫(kù),可以來這里開源項(xiàng)目解析)
如何閱讀第三方開源庫(kù)
選擇一些當(dāng)下熱門、學(xué)習(xí)價(jià)值高的第三方開源庫(kù),我認(rèn)為最值得學(xué)習(xí)的是Volly,開源項(xiàng)目解析中也有對(duì)Volly的解析。
首先下載源碼,然后在網(wǎng)上找一些源碼解析文章來看看,不要忘記,我們的宗旨之一“高效”,這樣就可以最快的對(duì)項(xiàng)目原理有一個(gè)大體的了解,再去看源碼具體實(shí)現(xiàn)就很快了。這里很重要的一點(diǎn)是如何找一些有價(jià)值的學(xué)習(xí)資料,我們最常有的就是搜索引擎,今天就主要說說如何選擇搜索引擎,以后有機(jī)會(huì)再寫寫如何篩選有價(jià)值的學(xué)習(xí)資料。搜索引擎:Google>bing>baidu.其實(shí)我不想黑百度,因?yàn)槲液芟肴グ俣?,既然現(xiàn)在還不是一名百度工程師,就說一下事實(shí)吧。Google是把你想要的,最有價(jià)值的東西呈現(xiàn)在你面前,并且他做到了。Google會(huì)把符合搜索結(jié)果、點(diǎn)擊量最大的、最有價(jià)值的東西排在首頁(yè),所以你很輕松就會(huì)找到你想要的東西(如果你上不了Google可以點(diǎn)這里)。bing和Google差不多,想法一樣,但是和Google相比,bing搜索到的有價(jià)值結(jié)果不是很多,沒有Google的理想,還有一些來著百度知道。百度呢,第一眼看到的是廣告,一些內(nèi)容來著百度知道,呈現(xiàn)的搜索結(jié)果不是按價(jià)值排序,你需要自己慢慢找。所以首推Google。
再你看了一些解析文章之后,理解了項(xiàng)目原理,對(duì)大部分類的功能有了一定的了解,再來看源碼的具體實(shí)現(xiàn)方式。在閱讀的過程中總會(huì)遇到一些看不懂的代碼,你可以先放一放,繼續(xù)往下看。這樣反復(fù)幾遍,就會(huì)對(duì)代碼的理解不斷加深。我認(rèn)為閱讀第三方開源庫(kù)主要是學(xué)習(xí)設(shè)計(jì)思想。
如何閱讀開源完整項(xiàng)目
毋庸置疑使用android studio閱讀完整項(xiàng)目,很高效。閱讀完整項(xiàng)目涉及的東西比較多,項(xiàng)目的架構(gòu)不同,使用的第三方庫(kù)不同,這就要求需要對(duì)項(xiàng)目中自己不熟悉的東西進(jìn)行學(xué)習(xí),也不需要都弄懂了再去看項(xiàng)目,邊看邊學(xué),遇到不會(huì)的就去搜資料學(xué)習(xí),這樣最快了。
第一步下載項(xiàng)目,在真機(jī)或虛擬機(jī)上運(yùn)行,最直觀的體驗(yàn)app的功能。然后看app的架構(gòu),mvc、mvp、mvvp,目前項(xiàng)目中mvvp用的比較少。然后打開build.gradle文件看看項(xiàng)目用了哪些網(wǎng)絡(luò)請(qǐng)求庫(kù)、圖片加載庫(kù)、其他庫(kù)。如果有不熟悉的,上網(wǎng)找一些文章學(xué)習(xí)一下。然后就打開manifasts文件找的入口activity,順藤摸瓜往下看。同樣,不懂的地方放過??赐暌槐?,再進(jìn)行下一步,不要指望一遍就可以搞定。這里給大家推薦一個(gè)特別值得學(xué)習(xí)的項(xiàng)目LookLook(Github地址:https://github.com/xinghongfe...):mvp架構(gòu),RxJava + Retrofit+okhttp,glide。項(xiàng)目結(jié)構(gòu)清晰,代碼量不是很大,學(xué)習(xí)價(jià)值高。方法基本也就這么個(gè)方法,剩下就是跟者自己的感覺走。
如果你的項(xiàng)目看多了之后你會(huì)發(fā)現(xiàn)每個(gè)項(xiàng)目可以分為以下幾個(gè)模塊:
UI(activity ,fragment)
adapter
數(shù)據(jù)實(shí)體
第三方開源庫(kù)的使用,網(wǎng)絡(luò)、圖片、其他工具
一些工具類
項(xiàng)目配置類
自定義View
其他(數(shù)據(jù)庫(kù),activity、fragment的基類,API等)
任何事情都可以熟能生巧,在看了一些開源項(xiàng)目后,自己最好開發(fā)一個(gè)??错?xiàng)目源碼是一個(gè)很費(fèi)腦子的事情,不能急于求成,我之前就有點(diǎn)著急,看了很多項(xiàng)目,高強(qiáng)度的進(jìn)行了20多天后,精力消耗很大,掉頭發(fā)很嚴(yán)重,大腦嚴(yán)重勞累過度,休息了一個(gè)星期才緩解過來。所以建議大家制定一個(gè)合理的學(xué)習(xí)時(shí)間,不要讓自己強(qiáng)度太大。
最后的感覺就是,看似不可思議的事情,只要自己靜下心來,按部就班,最后發(fā)現(xiàn)都不過如此嘛。小伙伴們開始 趕快開始Read The Fucking Source Code 吧。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65099.html
摘要:番茄工作法簡(jiǎn)約而不簡(jiǎn)單,本書亦然。在番茄工作法一個(gè)個(gè)短短的分鐘內(nèi),你收獲的不僅僅是效率,還會(huì)有意想不到的成就感。 @author ASCE1885的 Github 簡(jiǎn)書 微博 CSDN 知乎本文由于潛在的商業(yè)目的,不開放全文轉(zhuǎn)載許可,謝謝! showImg(/img/remote/1460000007319503?w=728&h=792); 廣而告之時(shí)間:我的新書《Android 高...
閱讀 1352·2023-04-25 15:21
閱讀 2684·2021-11-24 10:23
閱讀 3409·2021-10-11 10:59
閱讀 3255·2021-09-03 10:28
閱讀 1739·2019-08-26 13:45
閱讀 2329·2019-08-26 12:11
閱讀 929·2019-08-26 12:00
閱讀 1718·2019-08-26 10:44