前言
本来应该在春节前写这篇文章,但实在是有点忙,拖到春节才写。本来的年终总结,现在当做鸡年开工前对猴年的回顾,理清一下思路,哪些做过的、未做的、做得好的、做得不好的......
技术栈
2016年三个技术笔者认为自己做得比较好,并且实践比较成熟:
1.单元测试;
2.动态代理旧框架;
3.业务拆分。
单元测试
最早理解单元测试的概念,是在2015年末,一位读软件专业的同事,给我们介绍的junit、mockito(当时他也是半桶水,哈哈)。后来,经过几个月研究rxjava、retrofit、mvp、junit、mockito,总结出结合这几种技术的Android单元测试思路,《(MVP+RxJava+Retrofit)解耦+Mockito单元测试 经验分享》。
再接下来的几个月,在Android项目中具体落实单元测试,不断地整理思路、概念,对某些技术点进行深入研究。例如,如何隔离Android sdk依赖,如何进行文件、数据库测试,如何验证参数返回值等。
谈谈为什么写单元测试
Android单元测试 - 如何开始?
Android单元测试 - 几个重要问题
Android单元测试 - Sqlite、SharedPreference、Assets、文件操作 怎么测?
Android单元测试 - 验证函数参数、返回值的正确姿势
动态代理旧框架
受到Retrofit框架影响,在四月份时研究了java动态代理。动态代理并不是什么新鲜技术,要玩好它,并不容易。
我们的动态代理,主要用在网络层。因为项目比较旧,用户量大,旧代码不轻易改动;同时,也想用retrofit那种模式,仅需要写描述业务逻辑的接口,实现通过动态代理执行。因此,笔者决定自己写一个类似retrofit的框架,接口规则跟retrofit大体一致,底层代码还是用自己写的。这样跟使用retrofit的效果是一样的,而且可控,根据新需求做调整。框架和底层代码变动,不需要改动业务代码。配合单元测试,写网络请求业务效率比以前提高不少。
不仅仅是网络层,其他层也可以用动态代理的思路。
如何使用Retrofit请求非Restful API
同事拒绝Retrofit,怎么办?
业务拆分
对项目进行业务拆分,在2016年初已经有这个想法,由于一些技术点未突破,框架的不完善,旧代码各种耦合,新业务开发紧张,迟迟未能实现。2016年5月去北京参加GMTC大会,天猫、滴滴、链家网等,都有讲到业务拆分、插件化等开发模式,具体实现不尽相同,但理念基本一致。
回广州后,经过几个月的重构、框架升级、代码解耦,配合单元测试确保稳定性,加上对业务间调用数据这个技术点有所突破,业务拆分的路逐渐清晰起来。直到2016年11月,业务拆分总算在项目中得到实践。
项目的其中一个重要问题,就是编译慢,这个恐怕是很多项目都存在的诟病。业务拆分后,业务代码分成不同的module,每个module可以单独编译、运行。这样在开发新业务时,工程师仅需要编译新业务代码&底层代码,某种程度上开发效率大大提高。
App组件化与业务拆分那些事
ActivityRouter路由框架:通过注解实现URL打开Activity
其他与不足
笔者也有研究过插件化技术及可行性,觉得Small比较简单。(项目中并没有使用插件化)
轻量级插件化框架——Small
很遗憾,今年还未做到持续集成,jenkins、fastlane也没时间研究,希望2017年对持续集成方面有所涉足。
工程师的自我修养
春节后,笔者就是工作满四年的码农了,在思想上跟一两年前,有不少变化。
对于新功能开发,好像越来越没把握,指开发时间上。这个也跟产品要求越来越复杂有关,以前做的功能,流程比较单一,从后端请求数据、缓存、显示;现在做了几个功能,流程复杂,各种入口,各种情况......原来计划一个月开发,算上改需求、测试、改bug,往往不止一个月。
除了以上客观因素,也有主观因素。以前写代码,写完觉得不太乱,就提交;现在,写完还要想想函数名、成员名、类名好不好理解,函数调用、代码流程是不是通俗易懂,注解别人是否看得懂.....概括来说,就是可读性。还要写单元测试呢......
如果你问笔者,最大的变化在哪里,可能是懒惰吧.....哈哈哈哈哈.....
理财、保险
理财对于每个人来说,是非常重要的事情。笔者原本以为程序猿有很强的分析能力,对股市、基金更容易上手。其实,每个人也差不多,都很容易追涨杀跌,还有被小道消息左右。
从2015年3月买基金,股灾前成功脱险;2016年初重返基金,研究各种类型基金,债券、指数、分级;2016年10月开始玩股票,看市盈率、利润增长率等。
2016年债券收益非常非常低;6月份开始投H股指数,直到12月基本套现了,还留一点,这笔收益算是2016年最大的收益;后来把部分债基换量化基金,暂时亏损中(5%以内);股票嘛,这里大有学问,买了不少,基本都是蓝筹,没赚没亏。(股票好像不属于理财,属于投资)
投资有风险,入市需谨慎。
保险,跟理财同等重要(有的大V把保险也归为理财一种)。
去年9月就计划买份重大疾病险,约友邦的agent聊了一两次,对大陆这边的保险不太满意,现在打算买香港友邦的产品,有亲戚在港澳做agent。
我想好多读者对保险很陌生,觉得保险很多是骗人的。这么想很大原因是以往国内保险agent素质普遍低,老是推荐提成高的产品,性价比低,好赚钱;而且不诚信,本来你未达到投保条件,为了业绩,agent推荐你买,也不告诉你真要理赔时,可能拒赔。现在互联网那么发达,买保险的渠道很多,知乎、微信订阅号有不少大V介绍各种保险,大家不妨先看几篇文章。
这里强烈推荐力哥公众号:
保险公司打死不肯说的秘密
【你被骗了】99%普通人都会中招的买保险误区!
最聪明的人每年花多少钱买保险?
如果你完全小白,推荐先买一年医疗险 平安e生保 (平安保险官网or服务号“平安健康生活”买),再买一年交通意外or综合意外险。重大疾病险嘛,可以看完文章再考虑。当然,你也可以考虑家庭综合意外&医疗险。
千万别以为年轻身体棒棒哒就不用买保险,保险约早规划约好。
跑步
现在笔者的跑量,大概是一周一次,12公里左右;能承受的最大单次距离,是半马(21公里)。
在同事的威逼利诱下,2016年12月跑了广马全马(42公里),好惨T_T。这个量完全超出我承受能力,到了30公里后,边跑边抽筋。我公司的女同事们好变态的,全马不在话下。
笔者只是个跑渣。
旅行
2016年去了国内几个城市和景点:
乌镇
绍兴:三味书屋、鲁迅故居(百草园)、兰亭镇等
莫干山:国共和谈旧址、蒋介石度假别墅等
溧阳:南山竹海、天目湖
镇江:金山、焦山、北固山等
常州
无锡:灵山大佛、鼋头渚、南禅寺等
2017年初,还去了厦门。厦门空气真的好,对比北上广,确实挺小,散散心挺不错的。
关于作者
我是键盘男。
在广州生活,在互联网公司上班,猥琐文艺码农。喜欢科学、历史,玩玩投资,偶尔旅行。