對于這篇年度總結,我算是起筆了好幾次,又放棄了好幾次,可能對于技術類型的博客,我還是可以碼一碼,但是對于這種總結類型的記錄博客,我肚子里那點墨總是沒法碼出一篇我滿意的文章。后來想一想,博客是我為數不多的能堅持下來的一個習慣,我相信幾年后我再回過頭來看今天的這片博客,肯定會感慨萬千吧233333
我對我2018點年度總結:成長、沉淀的一年
成長
記得去年這個時候,我可能還忙于自定義View,動畫,現在翻看當時的博客還是顯的很青澀,當然,對于Android來說,對View的認識是必不可少的一步。
設計模式
第一次真正理解設計模式的重要性
今年年初我對于自己的目標是首先完善自己的Github,至少有幾個像樣的項目,既然要開源項目,沒有良好的代碼規(guī)范,項目沒有良好的設計模式,是拿不出手的。
所以今年首先我著重了自己對于代碼架構,設計模式的培養(yǎng),閱讀《Head First設計模式》,《Android源碼設計模式解析與實戰(zhàn)》,通過這兩本書,算是初步對于設計模式有了一個了解。
想想當年為了面試準備設計模式,死記硬背各種設計模式的類圖也是搞笑,當時完全不能理解設計模式這個概念,純靠死記類圖來應對設計模式的面試(現在還記得某公司面試讓我手繪了8個設計模式的類圖....)
拜讀完兩本書后,自己才算是真正意義上理解了設計模式中高內聚,低耦合的核心思想。如果說源碼是對于一項技術的深度學習,那么設計模式可以說是所有技術的敲門磚,我認為任何程序員一定要重視自己的代碼風格,一個人的技術好不好,其實看一下他寫的代碼大致都能有一個初步的定位。
看完這兩本書后,緊接著我開始學習Google推出的MVP和MVVM設計模式。這里要說一下我學習這個兩個框架的一個特殊原因,我現在的公司,由于歷史原因,所有頁面都是用MVC搭建,一些上古代碼,都是利用MVC,充斥在Activity中。尤其是我負責的公司里幾個核心功能,到現在,仍然存在一個8k+代碼量的Activity沒人敢動,每次功能迭代的時候,完全是一種痛不欲生的感覺。但這也算是給我變相帶來一些好處,就是我比其他人更能感覺到MVC架構的一些弊端。也正是因為這些原因,讓我更加注重對于MVP和MVVM的學習。
到此對于設計模式可以算是有了一個初步的了解,設計模式這個東西可以說不是速成的東西,我對于他的理解就像練字一樣,一定要有時間的積累和各種實際情況的檢驗才能更加精進。我對于他的定位是:沒有最好的架構,只有最合適的架構,如果只是一塵不變的套用設計模式,那么可以說只是學到了表面,只有學會了演變,根據實際場景,相應調整自己的架構,才是真正理解。
重構
工作以來的最大的收獲
如果說我對于自己今年工作成果的總結,那么就是重構,重構對于一個有一定規(guī)模的項目來說應該是很難遇到的,現有的基本上都是處于一個維護和更新迭代的過程,沒人敢輕易重構代碼,這里面的風險成本可以說是很高了。但由于公司規(guī)劃調整,很有幸作為一個校招進入公司第一年的新人,就有機會遇到公司大項目的重構。本次重構的公司最核心的一個功能頁面,也是最復雜的一個核心頁面,每日有百萬級別的訪問量,所以也感謝領導對于我的信任,讓我擔任了本次項目重構的主導。
有了前面對于設計模式的知識儲備,對于本次的重構我是有一些的準備的,從最初的整體頁面框架搭建,到多人協作的任務分配,再到頁面架構的設計,這一切都是很寶貴的經驗。整整兩個月的封閉開發(fā),最后的成果還是不錯的。
當然更感謝的是同事對于我設計的架構的建議和認可,最終的這個架構在公司內部做了技術分享和討論,后面可以考慮寫一篇博客和大家一起討論一下這個架構。
后續(xù)通過這次重構,我在我們小組內部推廣了MVP這個設計模式,建議后續(xù)的復雜或相對核心的頁面都改用MVP作為開發(fā)模式,這個在項目里也算不小的改變。
技術廣度
堅持學習Java,以Java為基礎,拓展廣度
如果不是今年的各種消息,可能自己還感覺不到原生開發(fā)的熱度的降低,從去年的RN,到今年的Flutter,再到阿里的Weex,微信的小程序,可以看出各家都在推出自己的跨平臺開發(fā)方案,讓我自己也對于自己的技術棧的理解也有了轉變,如果沒有今年的這些新技術,我可能還僅僅局限于AndroidUI層面的學習和理解,網上的評論眾說紛紜,一段時間我自己也有些迷茫,到底是該堅守原生學習,還是轉向跨平臺的學習,又或者是轉后臺的學習呢。
后來我決定每天抽一個小時,自己親身體驗,學習一下Js和React,有Java的基礎,學習Js和React的語法還是很快的,雖然沒有一個完整的項目,但至少對于這種跨平臺開發(fā)模式有了一個基礎的學習和理解。
后面我用同樣的方式,每天抽一個小時,自學了Python的語法,每天寫幾個小腳本,跑一跑還是很有成就感的。
對于后臺開發(fā),早期在學校的時候,我對于后臺的理解僅僅是數據的增刪改查,所以我感覺這個很枯燥乏味,但通過進入公司實際項目后,我發(fā)現后臺有微服務,分布式,高并發(fā)等一系列可以研究等方面,而且現在大部分公司的核心架構都是對于后臺的架構的,所以還是可以看出,對于Java,自己還是要著重學習,只有Java打好基礎,無論是原生層面,還是未來的發(fā)展都是很好的。
技術博客
去年我將技術博客從CSDN轉移到了簡書,實在受不了CSDN的廣告,但沒轉多久,簡書就出了某個事件,導致輿論對于簡書一頓抨擊,導致大部分人從簡書又去了掘金,最終我還是選擇了簡書,原因也很簡單,簡書對于作者的交互還是很不錯的,文章分類很清晰,而且我寫博客的目的一個是自己學習,一個是分享交流,為了各種其他的一些小事,導致自己寫博客的地方變來變去,感覺就變了自己寫博客的初衷,當然習慣在簡書上記錄,換個平臺真的很麻煩,博客最重要的還是堅持。
今年的博客質量相較于去年,我個人認為還是有很大的提升,像RecyclerView系列,算是我籌劃很久的,應該算是目前我知道的對于RecyclerView原理比較全面的一個系列博客了,加起來也有7k的閱讀量了。博客也更注重于框架源碼的分析,基本上維持1個月1篇的更新,明年對于博客的寫作方向準備向Android底層進行分析,希望自己能有一個不錯的收獲。
開源框架
今年一個小目標就是完善自己的github,也算是有了一定的收獲,今年開源4個項目,按照我心里的滿意度是:EasyTextView,EMvp,RichEditor,VRShow
其中EasyTextView是我最滿意的項目,因為這個組件已經在公司內部大范圍使用了,用過的人都說好~,一個好的開源項目一定要經過實際項目的檢驗,當然star量一直漲不上去~
技術難度最高的應該算是EMvp,這個項目算是我今年學習的一個縮影,用到了Android中相對較難的AOP,開發(fā)過程中學習到了:設計模式,Python,Bintray的使用,Gradle的使用等,應該算是一個相對成熟的一個框架了,但是可惜star的人不多~
明年希望能繼續(xù)完善項目,爭取早日自己能有一個超過1k的開源項目~
沉淀
今年在Android方面的總結我感覺更多的是沉淀,還記得去年的時候,自己的博客分析主要傾向于開源框架,本來自己的打算是,Volley,OkHttp,Glide,Retrofit,總想一口吃一個胖子,一上來就給自己定一個很高的目標,總想著一步登天。
今年,再學習框架的源碼同時,我把更多的重心放到了原生源碼中,例如RecyclerView,Handler,LayoutInflater,Fragment,再到正在學習的AMS,Binder等,只有真正學習理解了這些,才能拓展自己對于框架的理解面,像阿里的vLayout其實是基于RecyclerView的特性,熱修復和插件化必須要對AMS有很深入的理解,更多的還有google新的MVVM框架,所有的這一切首先自己要有一個良好的基礎,不是所有人一上來就能開發(fā)出這么出色的框架,只有打好基礎,基礎越牢固,才為未來提供了更多的可能性。
總結
今年如果滿分10分的話,給自己打個7分吧。
腳踏實地,我相信有付出和回報永遠是成正比的。