文档章节

一位移动端开发者这一年的辛路历程

云栖运营小编
 云栖运营小编
发布于 2017/01/25 17:04
字数 1406
阅读 28
收藏 0

记得去年写年终总结的时候,我还在去看老友的火车上,那时对新一年充满了无数期许,虽已是争分夺秒,但是当宣布 game over 的那一刻,这一年的收获、成长、遗憾、失落已经定格。

内容提要

  • MVP 架构 App
  • 浮窗组件开源
  • NodeJs 全栈开发
  • App web 化发展趋势
  • 年度博客总结

MVP 架构 App

针对项目中结构混乱,分层不清晰,提出 MVP 架构的想法,经过内部分享,试点实践,最终于五六月份在 MVP 的基础加上 EventBus 全面重构。 架构的收益是持续的,去掉了耦合在各个层面上回调函数,从架构层面上规避了最常见的内存泄漏问题,同时由于层之间的高度解耦,使得我们可以针对不同层次使用不同的单元测试框架,大大降低了写单元测试的成本。

尽管 MVP 和 EventBus不算什么新技术,但对我们的项目来说是第一次,作为一个团队的一员,要引入新的技术或新的想法不是一件容易的事。你得说服你的老大还有你的同事,你不能干巴巴的说这个技术好然后你的同事就能信服你,特别是技术水平和视野上的差异,没有认知上的共鸣,你很难推动实施。作为团队的新面孔,我也是费了很多波折,开始在小组内做 MVP 的分享,再后来是在新接手的业务带头实践 MVP ,真正让大家全面认可是下面的经历:

大约是4、5月的时候,随着功能的增加,各处隐藏的内存泄漏问题终于累积到了一个爆发点,大量引发 OOM 问题。经过内存工具排查、反复测试、观察内存走向,游走大部分历史代码终于解决了问题。我把解决过程详细的写成了两篇内部分享文章,鞭尸了 n 多个黑代码(很多人为了怕影响同事关系,宁愿容忍渣代码,也不愿出,我很不赞同这种价值观,对于技术氛围的形成十分有害,渣代码就是要鞭尸,我觉得应该提倡 review ,彼此鞭尸渣代码。),内存溢出并不是在某个功能点,而是散布在各个地方的 Handler ,这些 Handler 让各个层次藕断丝连。为了规避这些问题,才有了后来的 MVP + EventBus,它比开始真正被接纳。

关于在团队中引入新技术,除了沟通能力之外,你应该还要做到两点:1 明白项目的问题在哪里,2 用你要引入的技术解决当下的问题,3 对于新的技术,团队成员成本多大,例如当时想本要使用 RxJava ,考虑到当时团队成员的学习能力成本就使用较为容易上手的 EventBus 了。

浮窗组件开源

为了方便玩家游戏过程不用切换游戏也能方便地体验我们的 App 的服务,我们需要"伸出一双手"到游戏中,在合适的位置、合适的时间出现。等于将 App 的功能阉割到浮窗中,所以逻辑还是比较复杂,经过几个版本下来遇到了很多坑,特别是帮兼容问题上,在解决这些问题之后我觉得应该把浮窗组件沉淀一下,开源出来:https://github.com/liuguangli/FloatUtil

插件化研究

在进行浮窗功能设计的时候,一开始打算做成插件的形式,花了大量的时间进行插件化的研究,看了几大开源框架,对于设计模式、Android 框架、App 加载和执行等都是一次进阶性的提升,最后形成了插件化研究的系列文章:

NodeJs 全栈开发

App 客户端的需求越来越少,刚好后端要做业务重构,进行前后端分离,主动申请参与前端的开发,从无到有参前端 NodeJs 项目架构并支撑第一个新业务的上线。前后端分离,在组织架构上也算是一种解耦, 为了让后端从"代码套页面"的噩梦中解放出来、更加专注于数据业务的开发,后端面向细粒度 API 开发,只关注服务和接口;NodeJs 作为服务到用户的中间层,面向用户侧的开发,关注交互和界面,提供多端特性的适配。

阅读全文直接点击:http://click.aliyun.com/m/9802/

© 著作权归作者所有

云栖运营小编
粉丝 7
博文 98
码字总数 52676
作品 0
朝阳
运营/编辑
私信 提问
30天,App创业从0到1【6.13济南站】

活动概况 时间:2015年06月13日13:30-16:30 地点:山东大学凤岐茶社(济南山大南路27号) 主办:APICloud、逸创云客服、力拓软件 联合主办方:凤岐茶社 网址:www.apicloud.com、www.kf5.com...

API_Cloud
2015/05/28
0
0
30天,App创业从0到1【6.13济南站】

活动概况 时间:2015年06月13日13:30-16:30 地点:山东大学凤岐茶社(济南山大南路27号) 主办:APICloud、逸创云客服、力拓软件 联合主办方:凤岐茶社 网址:www.apicloud.com、www.kf5.com...

API_Cloud
2015/05/28
735
16
我的网络管理之路历程【我与51CTO一“七”成长】

想想我从事网络管理这条路的历程,往事历历在目,就好像是昨天发生的故事一样,要回溯到2008年这一年,2008年以前在工厂里做普通一线工人,每天长时间的上班,晚上还要加班很晚,甚至有时加班...

anlicec
2018/07/04
0
0
掘金技术征文 | 【2016 与我的技术之路】评选结果

历时一个月,掘金年度征文《2016 与我的技术之路》主题活动终于落下了帷幕。我们有幸见证了掘金上各位开发者们过去一年的成长,也跟着大家一起回顾了在这一年里走过的「技术之路」。 经过慎重...

稀土君
2017/02/21
0
0
SBDoc:圆我们一个小而美的梦

我叫计划,1989年我于一个阳光明媚的早上呱呱坠地! 2000年,我家门口开了一家小网吧,第一次互联网泡沫,那时候还是5元钱一小时,56k猫的速度打开一个网页都要好几分钟,但是我立刻就被眼花...

LoveAngel
2017/02/04
541
9

没有更多内容

加载失败,请刷新页面

加载更多

vmstat命令详解

https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html

流光韶逝
19分钟前
0
0
如何理解算法时间复杂度的表示

先从O(1) 来说,理论上哈希表就是O(1)。因为哈希表是通过哈希函数来映射的,所以拿到一个关键 字,用哈希函数转换一下,就可以直接从表中取出对应的值。和现存数据有多少毫无关系,故而每次执...

yky20190625
36分钟前
2
0
分布式架构 实现分布式锁的常见方式

一、我们为什么需要分布式锁? 在单机时代,虽然不需要分布式锁,但也面临过类似的问题,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制...

太猪-YJ
今天
7
0
GitLab Docker 安装记录

安装环境 环境Centos7.4 64 1.拉取镜像文件 docker pull gitlab/gitlab-ce:latest 2.docker 安装 git.zddts.com 为访问域名或换成可以访问的IP docker run -d --hostname git.***.com -p ......

侠者圣
今天
0
0
EfficientNet: 再论 CNN 的网络规模

由于这里公式无法正常显示,所有内容以图片内容上传,如有需要,可提供 pdf 版。

爱吃草莓的皮卡丘
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部