首页 存档 技术 查看内容

给创业码农的话--如何提升开发效率

2018-3-30 13:00 |来自: 互联网 303 0

摘要: 编者的话:simsun在2013年从手Q转岗到微信,在此非常感谢他对微信做出的贡献。在我看来,sim是一个活生生的全栈工程师,从硬件、后台到iOS、Android样样精通。同时sim非常崇尚开源,以开放的心态去做事,是一个节操 ...

编者的话:simsun在2013年从手Q转岗到微信,在此非常感谢他对微信做出的贡献。在我看来,sim是一个活生生的全栈工程师,从硬件、后台到iOS、Android样样精通。同时sim非常崇尚开源,以开放的心态去做事,是一个节操满满的新时代码农。尽管他为了个人家庭与事业离开了微信这个大家庭,但在这里我再次祝福他在新的舞台能取得更大的成功。
simsun在短短两个月内参与了"走起"app从后台、iOS、Android全程的设计与开发,最终完成上线,与微信从0到1的“创业”经历有很多相同之处。在下面我们听听他对提升开发效率的一些想法。

开篇先友情提示一下,此篇文章所谈论的部分技术点与微信关联不大,如有描述不准确的地方,也欢迎大家指出与讨论。笔者去年从微信团队“毕业”,变成一个创业码农,期间也踩过一些坑,这里与大家分享一些我个人的经验。

微信的整体氛围很像创业公司,快速、高效。但微信团队对技术的挖掘还是很深的,这一点在创业公司比较难做到。创业公司更追求快速、稳定的做出功能,完成迭代。

下面给大家介绍一点我个人觉得很大的提高了我的开发效率的工具。

App架构

RxJava

首先给大家安利ReactiveX,其中Android的核心实现为RxJava。

为了App不卡顿,我们会把所有耗时的操作(比如:网络访问、文件访问)放到Worker Thread中。但是Android本身的AsyncTask的设计个人觉得设计的十分糟糕,不但写出来的代码冗长,而且稍微复杂一些的多流操作就会写的完全无法维护(这里可以用Java本身的线程模式来实现)。而且肆意的开线程也会造成App的卡顿。这里本身最初的想法就是需要一个线程池,以Promise的方式对外提供接口。原先试用过facebook的开源方案Bolts-Android,这个库是parse的开源方案。后来有iOS的同事推荐Reactive的方案,于是就走上了Rx脑残粉的不归路。

这里微信也有类似方案,通过将所有的线程和Handler使用接口收敛,以监控和控制无节操的开线程、卡顿为主要目标。而Rx的方案以帮助我们用少量的code,清晰的实现复杂的时序逻辑为主。

首先Rx会大大减少你的代码量,这一点对“懒惰”的我们十分重要。 下面举2个平时开发都会遇到的问题来举例:

1. 搜索界面

我们需要在用户输入完毕后第一时间显示搜索结果,由于这个需要请求后台,我们又不想用户每次输入的时候都去后台请求。并且总需要显示当前最新输入内容的结果,不能因为网络的原因产生乱序的结果。

RxTextView.textChanges(searchEditText)
  .compose(this.bindToLifecycle())
  .debounce(300, TimeUnit.MILLISECONDS)
  .switchMap(SearchService::searchFeed)
  .subscribe(
      feeds -
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部