【2018年度總結】-成長沉澱的一年
對於這篇年度總結,我算是起筆了好幾次,又放棄了好幾次,可能對於技術型別的部落格,我還是可以碼一碼,但是對於這種總結型別的記錄部落格,我肚子裡那點墨總是沒法碼出一篇我滿意的文章。後來想一想,部落格是我為數不多的能堅持下來的一個習慣,我相信幾年後我再回過頭來看今天的這片部落格,肯定會感慨萬千吧233333
我對我2018點年度總結:成長、沉澱的一年
成長
記得去年這個時候,我可能還忙於自定義View,動畫,現在翻看當時的部落格還是顯的很青澀,當然,對於Android來說,對View的認識是必不可少的一步。
設計模式
第一次真正理解設計模式的重要性
今年年初我對於自己的目標是首先完善自己的Github,至少有幾個像樣的專案,既然要開源專案,沒有良好的程式碼規範,專案沒有良好的設計模式,是拿不出手的。
所以今年首先我著重了自己對於程式碼架構,設計模式的培養,閱讀《Head First設計模式》,《Android原始碼設計模式解析與實戰》,通過這兩本書,算是初步對於設計模式有了一個瞭解。
想想當年為了面試準備設計模式,死記硬背各種設計模式的類圖也是搞笑,當時完全不能理解設計模式這個概念,純靠死記類圖來應對設計模式的面試(現在還記得某公司面試讓我手繪了8個設計模式的類圖....)
拜讀完兩本書後,自己才算是真正意義上理解了設計模式中 高內聚,低耦合 的核心思想。如果說原始碼是對於一項技術的深度學習,那麼設計模式可以說是所有技術的敲門磚,我認為任何程式設計師一定要重視自己的程式碼風格,一個人的技術好不好,其實看一下他寫的程式碼大致都能有一個初步的定位。
看完這兩本書後,緊接著我開始學習Google推出的MVP和MVVM設計模式。這裡要說一下我學習這個兩個框架的一個特殊原因,我現在的公司,由於歷史原因,所有頁面都是用MVC搭建,一些上古程式碼,都是利用MVC,充斥在Activity中。尤其是我負責的公司裡幾個核心功能,到現在,仍然存在一個8k+程式碼量的Activity沒人敢動,每次功能迭代的時候,完全是一種痛不欲生的感覺。但這也算是給我變相帶來一些好處,就是我比其他人更能感覺到MVC架構的一些弊端。也正是因為這些原因,讓我更加註重對於MVP和MVVM的學習。
到此對於設計模式可以算是有了一個初步的瞭解,設計模式這個東西可以說不是速成的東西,我對於他的理解就像練字一樣,一定要有時間的積累和各種實際情況的檢驗才能更加精進。我對於他的定位是: 沒有最好的架構,只有最合適的架構 ,如果只是一塵不變的套用設計模式,那麼可以說只是學到了表面,只有學會了演變,根據實際場景,相應調整自己的架構,才是真正理解。
重構
工作以來的最大的收穫
如果說我對於自己今年工作成果的總結,那麼就是 重構 ,重構對於一個有一定規模的專案來說應該是很難遇到的,現有的基本上都是處於一個維護和更新迭代的過程,沒人敢輕易重構程式碼,這裡面的風險成本可以說是很高了。但由於公司規劃調整,很有幸作為一個校招進入公司第一年的新人,就有機會遇到公司大專案的重構。本次重構的公司最核心的一個功能頁面,也是最複雜的一個核心頁面,每日有百萬級別的訪問量,所以也感謝領導對於我的信任,讓我擔任了本次專案重構的主導。
有了前面對於設計模式的知識儲備,對於本次的重構我是有一些的準備的,從最初的整體頁面框架搭建,到多人協作的任務分配,再到頁面架構的設計,這一切都是很寶貴的經驗。整整兩個月的封閉開發,最後的成果還是不錯的。
當然更感謝的是同事對於我設計的架構的建議和認可,最終的這個架構在公司內部做了技術分享和討論,後面可以考慮寫一篇部落格和大家一起討論一下這個架構。
後續通過這次重構,我在我們小組內部推廣了MVP這個設計模式,建議後續的複雜或相對核心的頁面都改用MVP作為開發模式,這個在專案裡也算不小的改變。
技術廣度
堅持學習Java,以Java為基礎,拓展廣度
如果不是今年的各種訊息,可能自己還感覺不到原生開發的熱度的降低,從去年的RN,到今年的Flutter,再到阿里的Weex,微信的小程式,可以看出各家都在推出自己的跨平臺開發方案,讓我自己也對於自己的技術棧的理解也有了轉變,如果沒有今年的這些新技術,我可能還僅僅侷限於AndroidUI層面的學習和理解,網上的評論眾說紛紜,一段時間我自己也有些迷茫,到底是該堅守原生學習,還是轉向跨平臺的學習,又或者是轉後臺的學習呢。
後來我決定每天抽一個小時,自己親身體驗,學習一下Js和React,有Java的基礎,學習Js和React的語法還是很快的,雖然沒有一個完整的專案,但至少對於這種跨平臺開發模式有了一個基礎的學習和理解。
後面我用同樣的方式,每天抽一個小時,自學了Python的語法,每天寫幾個小指令碼,跑一跑還是很有成就感的。
對於後臺開發,早期在學校的時候,我對於後臺的理解僅僅是資料的增刪改查,所以我感覺這個很枯燥乏味,但通過進入公司實際專案後,我發現後臺有微服務,分散式,高併發等一系列可以研究等方面,而且現在大部分公司的核心架構都是對於後臺的架構的,所以還是可以看出,對於Java,自己還是要著重學習,只有Java打好基礎,無論是原生層面,還是未來的發展都是很好的。
技術部落格

2018
去年我將技術部落格從CSDN轉移到了簡書,實在受不了CSDN的廣告,但沒轉多久,簡書就出了某個事件,導致輿論對於簡書一頓抨擊,導致大部分人從簡書又去了掘金,最終我還是選擇了簡書,原因也很簡單,簡書對於作者的互動還是很不錯的,文章分類很清晰,而且我寫部落格的目的一個是自己學習,一個是分享交流,為了各種其他的一些小事,導致自己寫部落格的地方變來變去,感覺就變了自己寫部落格的初衷,當然習慣在簡書上記錄,換個平臺真的很麻煩,部落格最重要的還是堅持。
今年的部落格質量相較於去年,我個人認為還是有很大的提升,像RecyclerView系列,算是我籌劃很久的,應該算是目前我知道的對於RecyclerView原理比較全面的一個系列部落格了,加起來也有7k的閱讀量了。部落格也更注重於框架原始碼的分析,基本上維持1個月1篇的更新,明年對於部落格的寫作方向準備向Android底層進行分析,希望自己能有一個不錯的收穫。
開源框架

2018
今年一個小目標就是完善自己的github,也算是有了一定的收穫,今年開源4個專案,按照我心裡的滿意度是: EasyTextView , EMvp , RichEditor , VRShow
其中 EasyTextView 是我最滿意的專案,因為這個元件已經在公司內部大範圍使用了,用過的人都說好~,一個好的開源專案一定要經過實際專案的檢驗,當然star量一直漲不上去~
技術難度最高的應該算是 EMvp ,這個專案算是我今年學習的一個縮影,用到了Android中相對較難的AOP,開發過程中學習到了:設計模式,Python,Bintray的使用,Gradle的使用等,應該算是一個相對成熟的一個框架了,但是可惜star的人不多~
明年希望能繼續完善專案,爭取早日自己能有一個超過1k的開源專案~
沉澱
今年在Android方面的總結我感覺更多的是沉澱,還記得去年的時候,自己的部落格分析主要傾向於開源框架,本來自己的打算是,Volley,OkHttp,Glide,Retrofit,總想一口吃一個胖子,一上來就給自己定一個很高的目標,總想著一步登天。
今年,再學習框架的原始碼同時,我把更多的重心放到了原生原始碼中,例如RecyclerView,Handler,LayoutInflater,Fragment,再到正在學習的AMS,Binder等,只有真正學習理解了這些,才能拓展自己對於框架的理解面,像阿里的vLayout其實是基於RecyclerView的特性,熱修復和外掛化必須要對AMS有很深入的理解,更多的還有google新的MVVM框架,所有的這一切首先自己要有一個良好的基礎,不是所有人一上來就能開發出這麼出色的框架,只有打好基礎,基礎越牢固,才為未來提供了更多的可能性。
總結
今年如果滿分10分的話,給自己打個7分吧。
腳踏實地,我相信有付出和回報永遠是成正比的。