對(duì)于這篇年度總結(jié)谆焊,我算是起筆了好幾次浦夷,又放棄了好幾次,可能對(duì)于技術(shù)類型的博客罐孝,我還是可以碼一碼肥缔,但是對(duì)于這種總結(jié)類型的記錄博客续膳,我肚子里那點(diǎn)墨總是沒(méi)法碼出一篇我滿意的文章。后來(lái)想一想遣耍,博客是我為數(shù)不多的能堅(jiān)持下來(lái)的一個(gè)習(xí)慣炮车,我相信幾年后我再回過(guò)頭來(lái)看今天的這片博客酣溃,肯定會(huì)感慨萬(wàn)千吧233333
我對(duì)我2018點(diǎn)年度總結(jié):成長(zhǎng)赊豌、沉淀的一年
成長(zhǎng)
記得去年這個(gè)時(shí)候碘饼,我可能還忙于自定義View悲伶,動(dòng)畫,現(xiàn)在翻看當(dāng)時(shí)的博客還是顯的很青澀钠绍,當(dāng)然花沉,對(duì)于Android來(lái)說(shuō),對(duì)View的認(rèn)識(shí)是必不可少的一步磷脯。
設(shè)計(jì)模式
第一次真正理解設(shè)計(jì)模式的重要性
今年年初我對(duì)于自己的目標(biāo)是首先完善自己的Github赵誓,至少有幾個(gè)像樣的項(xiàng)目晦雨,既然要開源項(xiàng)目,沒(méi)有良好的代碼規(guī)范绑雄,項(xiàng)目沒(méi)有良好的設(shè)計(jì)模式奥邮,是拿不出手的洽腺。
所以今年首先我著重了自己對(duì)于代碼架構(gòu),設(shè)計(jì)模式的培養(yǎng)核无,閱讀《Head First設(shè)計(jì)模式》藕坯,《Android源碼設(shè)計(jì)模式解析與實(shí)戰(zhàn)》噪沙,通過(guò)這兩本書正歼,算是初步對(duì)于設(shè)計(jì)模式有了一個(gè)了解拷橘。
想想當(dāng)年為了面試準(zhǔn)備設(shè)計(jì)模式冗疮,死記硬背各種設(shè)計(jì)模式的類圖也是搞笑,當(dāng)時(shí)完全不能理解設(shè)計(jì)模式這個(gè)概念穷绵,純靠死記類圖來(lái)應(yīng)對(duì)設(shè)計(jì)模式的面試(現(xiàn)在還記得某公司面試讓我手繪了8個(gè)設(shè)計(jì)模式的類圖....)
拜讀完兩本書后特愿,自己才算是真正意義上理解了設(shè)計(jì)模式中高內(nèi)聚揍障,低耦合的核心思想毒嫡。如果說(shuō)源碼是對(duì)于一項(xiàng)技術(shù)的深度學(xué)習(xí)幻梯,那么設(shè)計(jì)模式可以說(shuō)是所有技術(shù)的敲門磚,我認(rèn)為任何程序員一定要重視自己的代碼風(fēng)格咬摇,一個(gè)人的技術(shù)好不好煞躬,其實(shí)看一下他寫的代碼大致都能有一個(gè)初步的定位。
看完這兩本書后在扰,緊接著我開始學(xué)習(xí)Google推出的MVP和MVVM設(shè)計(jì)模式芒珠。這里要說(shuō)一下我學(xué)習(xí)這個(gè)兩個(gè)框架的一個(gè)特殊原因搅裙,我現(xiàn)在的公司总放,由于歷史原因局雄,所有頁(yè)面都是用MVC搭建存炮,一些上古代碼,都是利用MVC宫盔,充斥在Activity中灼芭。尤其是我負(fù)責(zé)的公司里幾個(gè)核心功能般又,到現(xiàn)在,仍然存在一個(gè)8k+代碼量的Activity沒(méi)人敢動(dòng)寄悯,每次功能迭代的時(shí)候堕义,完全是一種痛不欲生的感覺(jué)。但這也算是給我變相帶來(lái)一些好處洒擦,就是我比其他人更能感覺(jué)到MVC架構(gòu)的一些弊端熟嫩。也正是因?yàn)檫@些原因嘉竟,讓我更加注重對(duì)于MVP和MVVM的學(xué)習(xí)。
到此對(duì)于設(shè)計(jì)模式可以算是有了一個(gè)初步的了解倦蚪,設(shè)計(jì)模式這個(gè)東西可以說(shuō)不是速成的東西边苹,我對(duì)于他的理解就像練字一樣,一定要有時(shí)間的積累和各種實(shí)際情況的檢驗(yàn)才能更加精進(jìn)慕购。我對(duì)于他的定位是:沒(méi)有最好的架構(gòu)沪悲,只有最合適的架構(gòu),如果只是一塵不變的套用設(shè)計(jì)模式贡珊,那么可以說(shuō)只是學(xué)到了表面涉馁,只有學(xué)會(huì)了演變,根據(jù)實(shí)際場(chǎng)景寒随,相應(yīng)調(diào)整自己的架構(gòu)妻往,才是真正理解叶沛。
重構(gòu)
工作以來(lái)的最大的收獲
如果說(shuō)我對(duì)于自己今年工作成果的總結(jié),那么就是重構(gòu),重構(gòu)對(duì)于一個(gè)有一定規(guī)模的項(xiàng)目來(lái)說(shuō)應(yīng)該是很難遇到的局嘁,現(xiàn)有的基本上都是處于一個(gè)維護(hù)和更新迭代的過(guò)程,沒(méi)人敢輕易重構(gòu)代碼肴茄,這里面的風(fēng)險(xiǎn)成本可以說(shuō)是很高了寡痰。但由于公司規(guī)劃調(diào)整棋凳,很有幸作為一個(gè)校招進(jìn)入公司第一年的新人,就有機(jī)會(huì)遇到公司大項(xiàng)目的重構(gòu)贞滨。本次重構(gòu)的公司最核心的一個(gè)功能頁(yè)面拍棕,也是最復(fù)雜的一個(gè)核心頁(yè)面勺良,每日有百萬(wàn)級(jí)別的訪問(wèn)量尚困,所以也感謝領(lǐng)導(dǎo)對(duì)于我的信任事甜,讓我擔(dān)任了本次項(xiàng)目重構(gòu)的主導(dǎo)示弓。
有了前面對(duì)于設(shè)計(jì)模式的知識(shí)儲(chǔ)備,對(duì)于本次的重構(gòu)我是有一些的準(zhǔn)備的跨跨,從最初的整體頁(yè)面框架搭建囱皿,到多人協(xié)作的任務(wù)分配嘱腥,再到頁(yè)面架構(gòu)的設(shè)計(jì),這一切都是很寶貴的經(jīng)驗(yàn)橱脸。整整兩個(gè)月的封閉開發(fā)分苇,最后的成果還是不錯(cuò)的。
當(dāng)然更感謝的是同事對(duì)于我設(shè)計(jì)的架構(gòu)的建議和認(rèn)可栏赴,最終的這個(gè)架構(gòu)在公司內(nèi)部做了技術(shù)分享和討論须眷,后面可以考慮寫一篇博客和大家一起討論一下這個(gè)架構(gòu)沟突。
后續(xù)通過(guò)這次重構(gòu),我在我們小組內(nèi)部推廣了MVP這個(gè)設(shè)計(jì)模式捎稚,建議后續(xù)的復(fù)雜或相對(duì)核心的頁(yè)面都改用MVP作為開發(fā)模式,這個(gè)在項(xiàng)目里也算不小的改變葡公。
技術(shù)廣度
堅(jiān)持學(xué)習(xí)Java条霜,以Java為基礎(chǔ)宰睡,拓展廣度
如果不是今年的各種消息,可能自己還感覺(jué)不到原生開發(fā)的熱度的降低旋圆,從去年的RN麸恍,到今年的Flutter,再到阿里的Weex刻肄,微信的小程序融欧,可以看出各家都在推出自己的跨平臺(tái)開發(fā)方案噪馏,讓我自己也對(duì)于自己的技術(shù)棧的理解也有了轉(zhuǎn)變,如果沒(méi)有今年的這些新技術(shù)隅要,我可能還僅僅局限于AndroidUI層面的學(xué)習(xí)和理解董济,網(wǎng)上的評(píng)論眾說(shuō)紛紜虏肾,一段時(shí)間我自己也有些迷茫欢搜,到底是該堅(jiān)守原生學(xué)習(xí),還是轉(zhuǎn)向跨平臺(tái)的學(xué)習(xí)吹埠,又或者是轉(zhuǎn)后臺(tái)的學(xué)習(xí)呢缘琅。
后來(lái)我決定每天抽一個(gè)小時(shí),自己親身體驗(yàn)翩隧,學(xué)習(xí)一下Js和React呻纹,有Java的基礎(chǔ),學(xué)習(xí)Js和React的語(yǔ)法還是很快的淑仆,雖然沒(méi)有一個(gè)完整的項(xiàng)目蔗怠,但至少對(duì)于這種跨平臺(tái)開發(fā)模式有了一個(gè)基礎(chǔ)的學(xué)習(xí)和理解省骂。
后面我用同樣的方式,每天抽一個(gè)小時(shí)怠惶,自學(xué)了Python的語(yǔ)法轧粟,每天寫幾個(gè)小腳本,跑一跑還是很有成就感的通惫。
對(duì)于后臺(tái)開發(fā)混蔼,早期在學(xué)校的時(shí)候惭嚣,我對(duì)于后臺(tái)的理解僅僅是數(shù)據(jù)的增刪改查,所以我感覺(jué)這個(gè)很枯燥乏味延旧,但通過(guò)進(jìn)入公司實(shí)際項(xiàng)目后槽地,我發(fā)現(xiàn)后臺(tái)有微服務(wù)芦瘾,分布式近弟,高并發(fā)等一系列可以研究等方面牡整,而且現(xiàn)在大部分公司的核心架構(gòu)都是對(duì)于后臺(tái)的架構(gòu)的,所以還是可以看出谣辞,對(duì)于Java泥从,自己還是要著重學(xué)習(xí)沪摄,只有Java打好基礎(chǔ),無(wú)論是原生層面祈餐,還是未來(lái)的發(fā)展都是很好的哄陶。
技術(shù)博客
去年我將技術(shù)博客從CSDN轉(zhuǎn)移到了簡(jiǎn)書屋吨,實(shí)在受不了CSDN的廣告,但沒(méi)轉(zhuǎn)多久鳍徽,簡(jiǎn)書就出了某個(gè)事件敢课,導(dǎo)致輿論對(duì)于簡(jiǎn)書一頓抨擊,導(dǎo)致大部分人從簡(jiǎn)書又去了掘金胖翰,最終我還是選擇了簡(jiǎn)書切厘,原因也很簡(jiǎn)單疫稿,簡(jiǎn)書對(duì)于作者的交互還是很不錯(cuò)的,文章分類很清晰舀凛,而且我寫博客的目的一個(gè)是自己學(xué)習(xí)途蒋,一個(gè)是分享交流,為了各種其他的一些小事懊烤,導(dǎo)致自己寫博客的地方變來(lái)變?nèi)タ矶眩杏X(jué)就變了自己寫博客的初衷,當(dāng)然習(xí)慣在簡(jiǎn)書上記錄壁肋,換個(gè)平臺(tái)真的很麻煩浸遗,博客最重要的還是堅(jiān)持箱亿。
今年的博客質(zhì)量相較于去年,我個(gè)人認(rèn)為還是有很大的提升察净,像RecyclerView系列盼樟,算是我籌劃很久的,應(yīng)該算是目前我知道的對(duì)于RecyclerView原理比較全面的一個(gè)系列博客了译秦,加起來(lái)也有7k的閱讀量了击碗。博客也更注重于框架源碼的分析稍途,基本上維持1個(gè)月1篇的更新,明年對(duì)于博客的寫作方向準(zhǔn)備向Android底層進(jìn)行分析突勇,希望自己能有一個(gè)不錯(cuò)的收獲。
開源框架
今年一個(gè)小目標(biāo)就是完善自己的github埂奈,也算是有了一定的收獲定躏,今年開源4個(gè)項(xiàng)目,按照我心里的滿意度是:EasyTextView垮抗,EMvp拗引,RichEditor,VRShow
其中EasyTextView是我最滿意的項(xiàng)目壤玫,因?yàn)檫@個(gè)組件已經(jīng)在公司內(nèi)部大范圍使用了欲间,用過(guò)的人都說(shuō)好~断部,一個(gè)好的開源項(xiàng)目一定要經(jīng)過(guò)實(shí)際項(xiàng)目的檢驗(yàn),當(dāng)然star量一直漲不上去~
技術(shù)難度最高的應(yīng)該算是EMvp她渴,這個(gè)項(xiàng)目算是我今年學(xué)習(xí)的一個(gè)縮影蔑祟,用到了Android中相對(duì)較難的AOP,開發(fā)過(guò)程中學(xué)習(xí)到了:設(shè)計(jì)模式苛败,Python径簿,Bintray的使用,Gradle的使用等缠捌,應(yīng)該算是一個(gè)相對(duì)成熟的一個(gè)框架了译蒂,但是可惜star的人不多~
明年希望能繼續(xù)完善項(xiàng)目,爭(zhēng)取早日自己能有一個(gè)超過(guò)1k的開源項(xiàng)目~
沉淀
今年在Android方面的總結(jié)我感覺(jué)更多的是沉淀十嘿,還記得去年的時(shí)候绩衷,自己的博客分析主要傾向于開源框架激率,本來(lái)自己的打算是,Volley招盲,OkHttp嘉冒,Glide,Retrofit顶籽,總想一口吃一個(gè)胖子银觅,一上來(lái)就給自己定一個(gè)很高的目標(biāo),總想著一步登天镊绪。
今年蝴韭,再學(xué)習(xí)框架的源碼同時(shí)跑慕,我把更多的重心放到了原生源碼中,例如RecyclerView牢硅,Handler芝雪,LayoutInflater,F(xiàn)ragment位岔,再到正在學(xué)習(xí)的AMS,Binder等抒抬,只有真正學(xué)習(xí)理解了這些,才能拓展自己對(duì)于框架的理解面妖胀,像阿里的vLayout其實(shí)是基于RecyclerView的特性惠勒,熱修復(fù)和插件化必須要對(duì)AMS有很深入的理解纠屋,更多的還有g(shù)oogle新的MVVM框架,所有的這一切首先自己要有一個(gè)良好的基礎(chǔ)赁遗,不是所有人一上來(lái)就能開發(fā)出這么出色的框架灼舍,只有打好基礎(chǔ),基礎(chǔ)越牢固炫乓,才為未來(lái)提供了更多的可能性献丑。
總結(jié)
今年如果滿分10分的話,給自己打個(gè)7分吧箩做。
腳踏實(shí)地妥畏,我相信有付出和回報(bào)永遠(yuǎn)是成正比的。