写点什么

座谈会:移动开发中的痛点

  • 2015 年 4 月 16 日
  • 本文字数:2225 字

    阅读完需:约 7 分钟

4 月 12 日,InfoQ 社区编辑俱乐部第二次线下聚会在中关村创业大街某咖啡馆举行。本次活动讨论的主题为移动开发中的痛点,除了 InfoQ 社区编辑唐巧、郭亮来到现场以外,还有郭虹宇、邓宇光、代码家等国内知名移动开发者也参加了活动。以下是对讨论中的重点总结:

痛点一:缺乏最佳实践

在 Github 有 3.5K+ 关注者的代码家首先表示,移动开发,特别是 Android 开发至今缺乏最佳实践,很多类和接口有多种实现方式,大家都按自己熟悉或喜欢的模式来进行开发,导致要想读懂别人的代码很费劲,后续维护起来更是个大问题。

代码家本人想到的解决方案是推出一个轻量级框架,使用这个框架,大家都遵循同一套模式,同时还能缩减代码量,防止重复劳动,这个框架仍在开发中,代码家表示将于近期开源。

iOS 开源大牛郭虹宇表示,他的想法和代码家不谋而合。在他看来,移动开发团队如果达到一定规模,最好的做法是先做框架,然后基于框架再来开发。这样能在团队内统一认识,开发出的代码更容易维护。但这样也有缺点,就是框架的学习也有一定成本,另外框架的维护困难,如果框架很复杂的话,一旦开发框架的人离开,这个框架的生命也基本上就结束了。

百度的 iOS 开发工程师孙源也遇到了类似的问题,作为一个有着轻微代码洁癖的人,难以忍受代码风格不同,虽然很多代码风格问题可以通过遵守编码规范来解决,但还是有一些细节问题是编码规范所关注不到的,比如方法名和参数之间的空格等。孙源的解决方法是写一个 Xcode 插件,能够从编译层面对代码语法树进行分析,从而标记出代码风格不同的地方,这个插件也将开源出来。

猿题库 iOS 研发工程师唐巧表示,对于这样的情况,其实还可以用代码审查来解决。使用 gerrit 搭建代码审查环境,在执行中贯彻下去,猿题库就采用了这套系统,取得了不错的效果。

痛点二: 对 MVC 架构划分的理解

郭虹宇表示,他在面试开发者时经常问的一个问题是,哪些东西属于 Controller,而得到令人满意的回答很少。事实上,在 iOS 开发中,View 和 Controller 分的并不是特别清楚,郭虹宇认为在 iOS 开发中并没有什么 View 和 Controller,只有 Model+ViewController,如果对 MVC 架构理解不深入、或者团队里对 MVC 的理解有差异的话,很容易写出臃肿的 ViewController,以及出现痛点一中的实现方式混乱,给代码维护带来麻烦。郭虹宇的解决方法是通过框架在上层实现 View 和 Controller 分离,同时引入大家熟悉的 HTML+CSS 来做 MVC,尽量降低使用者的学习成本,这就是他的新框架 samurai Native 的由来,这个框架已经开源,并且他还将在 QCon 北京上分享开发这款框架的一些想法。

对 MVC 架构划分的理解的不一致,不仅仅会反映在应用的架构上,还会带来其它问题。百度研发工程师邓宇光分享道,如果应用的 UI 组件很多,并且相互之间有复杂的通信逻辑,在多人维护的情况下,很容易造成通知的滥用,最后变得无法维护。比如一个通知可能有多个接收者,需要刷新多个 View 界面,但在多人维护情况下,很可能会发生遗漏、重复调用等问题。他的解决方案是使用 KVO 或者观察者模式,让 View 去观察一个统一的 model,获取改变后刷新整个 UI。事实上,这个思路和 React 非常接近。

痛点三:移动开发往哪儿去,前端还是 Native?

最近 Facebook 开源了 React Native 的 iOS 版本,一石激起千层浪,在移动开发者群体中引起了巨大的反响。在聚会现场大家围绕着它也展开了激烈的讨论。

React Native 所代表的 Web 开发 Native App 技术,解决了移动开发中的很多痛点,比如唐巧提到的 App Store 审核周期过长的问题,使用 Web 更新机制可以很好的解决。另外还有跨平台问题,iOS 平台和 Android 平台都难以放弃,Web 开发的代码也可以很好的复用,降低了开发成本。

郭虹宇认为,无论是近来的 NativeScript 还是 React Native,都是将 Web 开发技术引入到 Native 开发。在过去,移动开发中的 Web 与 Native 之争基本以 Native 的胜利而告终,因为 Web UI 的性能是无法与原生相提并论的。即使目前手机性能有了巨大提升,但在 UI 交互等方面 Web UI 还是远远不如原生 UI。而现在的这些新框架虽然引入了 Web 开发,但同时采取了原生 UI,从而在某种程度上避免了 UI 性能问题。React Native 的意义除了它本身之外,还在于 Facebook 以它巨大的影响力,将一大批前端开发者带入了移动开发的战场。而从此以后公司在进行移动开发技术选型时会面临抉择:到底是使用前端技术还是 Native 开发技术?到底是招聘前端开发者还是移动开发者?生存环境被挤压, 这是摆在所有移动开发者面前的问题。

不过,唐巧认为,这个问题没那么严重。每个移动平台都有各自的交互规范,用 Web 技术开发移动 App 也必须要遵循这些规范。而 UI 交互的开发占据 App 开发的很大一部分内容,因此即使是用 Web 技术开发 Native App,也必须学习 Native 开发,并且整个 App 开发还是需要 Native 开发的参与。另外他也提到,移动开发者其实可以趁这个机会学习前端技能,这样未来不局限于移动开发,道路更加宽广。

除了这些之外,现场还讨论了移动安全,Go 语言进入 Android 和 iOS 带来的影响,对遗留代码进行重构的最佳时机等话题。直到活动结束,大家仍然意犹未尽,感谢 OneAPM 对本次活动的支持,期待有更多的机会大家能够聚在一起。


感谢唐巧对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流。

2015 年 4 月 16 日 08:3412770
用户头像

发布了 164 篇内容, 共 95.9 次阅读, 收获喜欢 383 次。

关注

评论

发布
暂无评论
发现更多内容

2021年《中国DevOps现状调查报告》正式发布!GitLab被选为使用率最高的开源软件安全类工具(内附下载链接)

极狐GitLab

Python3 数字

Geek_aee0b4

Docker可视化管理工具对比(DockerUI、Shipyard、Rancher、Portainer)

xcbeyond

Docker Portainer shipyard rancher 8月日更

从错误中成长

escray

学习 极客时间 朱赟的技术管理课 8月日更

前方高能!Alibaba最新出版的JDK源码剖析手册(究极奥义版)开源

程序员改bug

Java spring 程序员 编程语言 后端

导致我们形不成「自律」的「罪魁祸首」

非著名程序员

提升认知 个人提升 自律 8月日更

前方高能预警!阿里大佬出品“Spring实战学习笔记”震撼来袭

Java~~~

Java spring 面试 微服务 架构师

15 道超经典大厂 Java 面试题!重中之重

程序员鱼皮

Java c++ 面试 后端 Go 语言

KIE(Knowledge Is Everything)

LeifChen

drools 8月日更 KIE 知识库

Spring Boot核心技术之Restful映射以及源码的分析

互联网架构师小马

模块四考试试卷存储方案

kitten

模块四

ipfs矿机怎么买?ipfs矿机在哪买?

ipfs矿机怎么买 ipfs矿机在哪买

数据中心的组织架构是怎样的?

Skipper

大数据 数据中心 数字化 组织架构

我从外包辞职了,10000小时后,走进字节跳动拿了offer

Java~~~

Java 面试 微服务 JVM 架构师

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

Java~~~

Java 面试 微服务 Spring Cloud 架构师

趁着课余时间学点Python(四)真的花点课余时间就能理解的分支控制语句

ベ布小禅

8月日更

同态加密算力开销如何弥补?港科大团队提出FPGA加速方案

星云Clustar

联邦学习 同态加密 隐私计算 算力加速 FPGA加速

Java程序员3个月从月薪6k涨到15k,你知道我是怎么过来的吗?

Java~~~

Java 面试 微服务 JVM 架构师

涨薪50%,从小厂逆袭,坐上美团L8技术专家(面经+心得)

Java~~~

Java 面试 微服务 JVM 架构师

金九银十面试分享!字节跳动Java研发岗(内附万能模板)

Java 编程 架构 面试 架构师

Python3 运算符

Geek_aee0b4

怎样回到常识做投资?

石云升

投资 8月日更 启发

它来了!靶机渗透题目的一次实战记录

网络安全学海

网络安全 信息安全 实战 渗透测试 安全漏洞

配置ssh免密码登录

一个大红包

8月日更

阿里内部最新、最全Java面试手册,Github上获赞70K

程序员改bug

Java 编程 程序员 编程语言

国内外 DevOps/DevSecOps 报告对比解读:安全与云原生持续升温

极狐GitLab

DevOps 安全 DevSecOps

特斯拉自研超算Dojo本月亮相? UCLA教授发推提前泄密

百度开发者中心

自动驾驶 最佳实践 方法论 科技信息

fil矿机有哪几种?fil矿机算力怎么计算?

fil矿机有哪几种 fil矿机算力怎么计算

毕业设计

方堃

2021年7月云主机性能评测报告出炉,华为云再登榜首

博睿数据

【Vue2.x 源码学习】第二十六篇 - 数组依赖收集的实现

Brave

源码 vue2 8月日更

座谈会:移动开发中的痛点_移动_徐川_InfoQ精选文章