对于这篇年度总结,我算是起笔了好几次,又放弃了好几次,可能对于技术类型的博客,我还是可以码一码,但是对于这种总结类型的记录博客,我肚子里那点墨总是没法码出一篇我满意的文章。后来想一想,博客是我为数不多的能坚持下来的一个习惯,我相信几年后我再回过头来看今天的这片博客,肯定会感慨万千吧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打好基础,无论是原生层面,还是未来的发展都是很好的。
技术博客
去年我将技术博客从CSDN转移到了,实在受不了CSDN的广告,但没转多久,就出了某个事件,导致舆论对于一顿抨击,导致大部分人从又去了掘金,最终我还是选择了,原因也很简单,对于作者的交互还是很不错的,文章分类很清晰,而且我写博客的目的一个是自己学习,一个是分享交流,为了各种其他的一些小事,导致自己写博客的地方变来变去,感觉就变了自己写博客的初衷,当然习惯在上记录,换个平台真的很麻烦,博客最重要的还是坚持。
今年的博客质量相较于去年,我个人认为还是有很大的提升,像RecyclerView系列,算是我筹划很久的,应该算是目前我知道的对于RecyclerView原理比较全面的一个系列博客了,加起来也有7k的阅读量了。博客也更注重于框架源码的分析,基本上维持1个月1篇的更新,明年对于博客的写作方向准备向Android底层进行分析,希望自己能有一个不错的收获。
开源框架
今年一个小目标就是完善自己的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分吧。
脚踏实地,我相信有付出和回报永远是成正比的。