班布里行纪

谨以感恩之心,怀孺孩童心性

嗨,我是唐小引 (@唐门教主),英文名:Banbury Tang,取自英国牛津郡的 Banbury。爱开发但技术渣,爱写文但太随性,喜欢读古龙书,经常逛 GitHub,极度热爱清蒸鲈鱼,并终于自力更生地学会了这道菜。


是时候适配 Swift 3 了吗——专访 LINE iOS 开发工程师王巍

王巍@onevcat),江湖人称“喵神”,iOS 和 Unity3D 开发者,旅居日本,目前供职于 LINE,著有《Swifter - 100 个 Swift 必备 tips》,同时也是翻译项目 ObjC 中国的组织者和管理者,维护 VVDocumenter-Xcode 及 Kingfisher 等开源项目。

王巍 LINE iOS 开发工程师(Photo by 李涛 Geek2Startup)

前言

对于众多 iOS 开发者来说,提升技能最多关注的非唐巧王巍(以下称“喵神”)的博客莫属。印象里的喵神是当之无愧的「三好」,比如在今年的 WWDC 即将开始之前,喵神便特地为初次参会的开发者写了攻略。而即使是我这个技术渣去请教他各种问题,也会耐心细致地解答。除却技术问题本身,笔者也很想知道,在日常的项目开发中,喵神是否也会碰到一些让他颇感头疼的问题,结果他是这样说的——“技术上的问题倒是都不难解决,最困难的还是和人交流”。不禁让我想起了热爱写代码、玩游戏、读书而不太乐于交流却在不久前被我强拉着说了几个小时话的 YYKit 作者 @ibireme

去年 MDCC 移动开发者大会便曾邀请在日本的喵神回国分享,然彼时因刚荣升奶爸,牵挂家人未能成行。而今年,在 MDCC 再次发出邀请时,他欣然应允,并与我们一起共同策划了整个 iOS 开发峰会,希望能够为国内的 iOS 开发者们带来「高质量且实用」的新技术与成熟项目的经验分享与实操演示。

而这次的采访一方面源于 MDCC 2016,另一方面,也是基于目前在 iOS 开发者群体中所面临的棘手问题,比如:

11W+行的代码来适配 Swift 3 是一种什么样的感受?
感觉自己被掏空。。。
∑(O_O;)

这是一段真实的对话,主人公是国内一个非常有格调的美食类 App 的 iOS 负责人。在 Swift 3 发布后,他们的团队便率先开始了对于 Swift 3 的适配,然而,「被折腾得死去活来」是他的原话,语法改完,依然跑不起来。而笔者在与多位 iOS 工程师朋友交流时,也发现,苹果简直让全世界的 iOS 开发者与 Swift 谈了一场「虐恋」。于是,我便带着他们当前所面临的以 Swift 3 为主的问题请教了喵神。

访谈录

请分享一下您当前正在做的事情。

王巍:正在将我的几个 Swift 写的开源项目(比如 KingfisherRainbow)进行 Swift 3 适配。Swift 3 中 API Guide 和很多现有的内容都发生了改变,所以进行版本适配需要花不少精力。

在日常的开发中,您有遇到哪些比较头疼的问题,以及如何解决的?

王巍:技术上的问题倒是都不难解决,最困难的还是和人交流。比如如何与策划或者设计人员协调,如何合作来打磨用户满意,维护方便的优秀项目,是比大多数技术问题要困难的挑战。

目前在 iOS 开发上您有哪些特别关注的技术?正在深度研究的是?

王巍:自从去年 WWDC 以来,一直对面向协议编程和 Swift 中的泛型应用很感性去。现在正在挖掘泛型和 Cocoa 到底能够融合到什么样的程度,这个新的编程范式是否能够很好地用在 App 开发中。

在日本以及 LINE 公司工作,有哪些深有感触的事情?比如技术层面、团队氛围等方面。

王巍: 日本的开发团队在技术上可能没有太多能值得称道的地方,但是团队里开发者的认真和严谨确实是让人佩服。相对来说,LINE 的组织架构比较扁平,工程师之间,工程师与策划或者设计之间,都是直接进行交流。这种时候开发文档和企划书就尤其重要。而日本不少开发者能够做到丝毫不差地按照开发文档交付项目,专业态度非常好。

现在还不到实际项目适配 Swift 3 的时候

请问您对于今年 WWDC 上 Swift 3 升级有着怎样的看法?

王巍: Swift 3 是这门语言开源后的第一个大版本,这次更新的幅度远超以往任何一次升级,也可以预见,之后 Swift 的变化也不再可能像这次这么大的幅度。综合来说,Swift 的开发团队想要在新版本中解决从 Objective-C 转换中最后的一些遗留问题。同时,在开源社区的帮助下,很多开发团队没有考虑到的细节也得到了完善。Swift 的开源带来了社区对这门语言更深入的了解,以及更迅速的进化。Swift 3 的更新的方向也十分令人激动。

您如何看待 Swift 3 包含 ABI 不稳定、语法变太多、API 变了又变?什么时候能用上?

王巍: API 上最大的变化的原因是要遵循新的 API Guideline,而新的 API Guideline 的目的只有一个,那就是让通过 Swift 使用 Cocoa 框架更加自然。如果说 Swift 1 和 2 还是带着 Objective-C 的枷锁跳舞的话,Swift 3 中这个限制在很大程度上可以说消失了。Swift 3 中开发者可以用更 Swifty 的方式来使用这门语言,同时这也意味着 Swift 和 Objective-C 之间的联系将更少(毕竟如果要提供两种语言都合适的 API 的话,需要很多额外工作量)。

在实际项目中,现在就适配 Swift 3 是否适合?《Swifter - 100 个 Swift 必备 tips》现在有更新计划?

王巍: 实际项目的话建议还是等一段时间。因为 Swift 3 改动很大,所以不一定所有第三方框架都会在第一时间进行适配。另外,对于较大项目,即使在自动迁移的帮助下,想要全面转向 Swift 3 的 API 也需要花费不少精力。Xcode 8 中 Swift 2.3 和 Swift 3 可以同时共存,Apple 也将接受这两个版本的 Swift 项目,所以 App 的项目并不着急马上进行适配。不过如果你是框架作者的话,尽早将项目转为 Swift 3 会是很好的选择。《Swifter - 100 个 Swift 必备 tips》有计划更新到 Swift 3,不过鉴于现在 beta 版也还不稳定,有不少特性还没有最后实装,所以这本书的更新会在稍后一些时候进行。

在将项目代码升级至 Swift 3 的过程中,都遇到过哪些问题?

王巍: 我正在将我的开源框架升级到 Swift 3,遇到的最大的问题是 API Guideline 的一些细节上的处理。大部分时候一个 API 的命名是比较容易确定的,但是对于某些模棱两可,可能适用于多条规范的 API 名字,在处理上需要考虑更多东西。举个例子,不少接受通用类型(比如 Int,String)作为参数的方法,它们的名字就难以确定。

现如今,很多新加入的 iOS 开发者首选学习的是 Swift,是否意味着 OC 式的语法、API 等都可以舍弃了?

王巍: Swift 作为入门 iOS 开发来说是非常理想的,但是国内在接受新技术这方面相对似乎要慢一些,所以在之后一年可能还是需要简单了解 Objective-C 的语法。国内 Swift 适配的速度较慢的一个重要原因是 Swift 程序的运行时会被打包到 App 中,导致体积增大,而国内用户恰好比较看重流量。所以希望在 Swift 运行时被集成到系统中后国内的 Swift 应用和开发能有一个大的增长,这样我们就可以摆脱 Objective-C 的一套不安全和相对落后的东西了。

开源的 Swift 对于跨平台应用开发是否会造成影响?

王巍: 对于移动端来说,Swift 还不能用于 Android 开发,所以并不会产生什么影响。不过,相对来说,Android 开发可能会由于 Swift 的压力,而对 Kotlin 之类的更先进的语言进行一些尝试。对于服务器端来说,Swift 虽然可以进行开发,但是相应的工具链和生态相比其他成熟的服务器语言来说还有一定差距。一些 Swift 开发者可能会尝试使用这门语言进行服务器开发,这样他们就能够在客户端和服务器同一语言,甚至共用一些模块。不过现在都处于早期的尝试中,要说会造成影响还为时过早。

编程语言与书籍启发

就不断演化的语言来说,我们正在向何处去?比如,5 年后会如何?对于您来说,您认为一门语言向开发者提供什么是最重要的?

王巍: 最近几年编程语言有一种趋同的趋势,这也是最近几年大家在工程实践中总结的一些经验的体现,比如更多地使用函数式、避免 null 指针等等。总体来说,编程语言正在向更安全,更易于开发者书写的方向发展。要预测五年后的情况太难,不过相信之前的这些趋势会继续发展。另外,相比于一些通用型的语言,那些特别设计来针对某一专门领域的语言也将会有很大空间。

迄今为止,对于您在从事开发方面影响最大的著作是?您有着哪些启发?

王巍: Robert C. Martin 的 The Clean Coder。这本书教会了我如何以一个专业程序员的思维来思考问题,也让我明白了开发中必须做出的一些取舍。

MDCC 2016

在今年的 MDCC 移动开发者大会上,准备和开发者们分享什么?

王巍: 可能会分享一些面向协议编程和泛型如何与 Cocoa 结合使用的实例,因为在项目里尝试用了一些,觉得对改善现有设计很有帮助。

您最期待在 MDCC 2016 上看到哪些内容?收获什么?

王巍: 希望能看到更多的改善项目设计,组织架构以及可维护性的思路,因为工作中的软件开发我自己所追求的主要是代码简洁可读以及保证可维护性,因此如果能有一些这方面的启发的话,会对日常开发有很大帮助。

最后,以一张今年初与 iOS 众大神的合影结束这次的采访,同时感谢喵神于百忙之中的答疑解惑。9 月 23-24 日,在北京• 国家会议中心举行的MDCC 2016 移动开发者大会上,喵神将在现场进行交流与分享,欢迎面基。

本文同时刊登在 CSDN、《程序员》杂志 2016 年 8 月刊

最近的文章

Google 的灵魂

题图:摄于从 Google 回韩国城的公车上别让脑子蒙上灰尘,封闭在棱镜里。—— 宜海阔天空日周四上午,冒着迷离的雨气拜访了 Google Beijing,忽然就和着人群在明亮的灯光下碰触到了开放的 Google 基因。在 Google Beijing 的办公室里,随处可见的卡哇伊的小 Android,有可以打乒乓球、桌球、游戏的娱乐室,做个 SPA 的按摩室、健身房等,会议室有皮影、日式武馆、凤凰等的浓烈风格,我还看到了一个外国人一只脚趿着拖鞋另一只脚丫光着踩在座椅上站立办公。Googl...…

班布里行纪继续阅读
更早的文章

江湖再见:风铃中的刀声

心之所到,随便想想。前言:扯一些公司新来一个在美日韩都有学习的妹子实习生,午饭时聊起国内外大学的种种授课形式,对比发现,当初我所接受的上课方式其实还是很自由的。那个时候,我们会以小组为分轮番准备课件并进行讲解,老师还会提问。而不是老师如「老夫子」般的独自一人在讲台上从上课讲到下课。大学几年,我最喜欢的地方是机房和图书馆,以及那个满天树荫里爬满藤枝的老房子。作为一个每天钻研操作系统、机房架构、编程语言、网页设计的伪学霸,最喜欢看的书却是古龙的作品,而学校图书馆里有整整一架子!!!古龙先生...…

一枚古龙迷继续阅读