写点什么

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

  • 2015-04-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-04-16 08:3413582
用户头像

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

关注

评论

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

边缘计算技术:深度学习与人工智能的融合

熬夜磕代码、

终端闲思录(3)- 标准三剑客的本质

蓬蒿

终端 文件描述符

从DevOps状态报告看技术团队的文化建设

京东科技开发者

感谢同行者|携手相伴前行路,共筑开源创未来

开放原子开源基金会

开源

领跑 AI 时代,开放原子开发者大会——2023龙蜥操作系统大会圆满举办

开放原子开源基金会

开源

稳定的数据云平台如何炼成?奇点云解读“RAS”典型问题

奇点云

奇点云 数据云平台 DataSimba

《用“开源”的方式讲开源的法律,有问必答,一问到底》——开源合规分论坛为你答疑解惑

开放原子开源基金会

开源

技术创新,照见未来 | 2023开放原子开发者大会OpenHarmony分论坛圆满举行

开放原子开源基金会

开源

聊点个人成长那点破事儿

6点无痛早起学习的和尚

写作 21 天技术人写作行动营

一文掌握 Kubernetes 证书

SEAL安全

Kubernetes 云原生 Kubernetes 集群 企业号12月PK榜

铜锁/Tongsuo项目管理委员会成立,重磅发布8.4.0版本

开放原子开源基金会

开源

多功能数据恢复软件:Apeaksoft Data Recovery激活中文

mac大玩家j

数据恢复软件 Mac软件 Mac数据管理

为啥不建议用BeanUtils.copyProperties拷贝数据 | 京东云技术团队

京东科技开发者

spring BeanUtils copyProperties

大模型 “下沉时刻”,容联云完成“三级跳”

脑极体

AI

大咖云集,2023开放原子开发者大会助力开发者实现梦想

开放原子开源基金会

开源

前端 JS 安全对抗原理与实践

vivo互联网技术

前端加密 JS混淆 调试和反调试

推动企业数智化国产替代 用友BIP献上中国方案

用友BIP

国产替代

书写开源之魂|2023年活力开源贡献者、开源项目揭晓

开放原子开源基金会

开源

开源赋能汽车智能化演进分论坛圆满举办

开放原子开源基金会

开源

使用极狐GitLab Triage 来自动管理 Issue 和 MR

极狐GitLab

荣誉 | 第七在线(7thonline)荣获STIF2023年度数智化创新典范奖

第七在线

一起学Elasticsearch系列-并发控制

Java随想录

Java 大数据 elastic 检索

开源治理与开发者运营分论坛圆满举办

开放原子开源基金会

开源

2023开放原子开发者大会:赋予开发者高光时刻 推进开源生态健康发展

开放原子开源基金会

开源

QCN6274 and QCN9274: functional differences and application areas of wireless chips

wallysSK

【低代码】低代码平台协同&敏捷场景下的并行开发解决方案探索 | 京东云技术团队

京东科技开发者

敏捷 低代码 并行开发

Typora+PicGo 搭建免费图床

吳先森321

经验分享

KubeWharf:构建下一代分布式操作系统的云原生力量

不会算法。

一款DC-DC控制器应用方案

梦笔生花

软件开发

Geek_8da502

万能扫描仪整合软件:ExactScan pro免激活中文版

胖墩儿不胖y

Mac软件 扫描工具

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