写点什么

从 SlideShare 的开发看 Swift 语言

  • 2015-06-04
  • 本文字数:1809 字

    阅读完需:约 6 分钟

作为苹果公司推出的 iOS 和 OS X 应用程序编写语言, Swift 已经走过了一年的路程。因其安全的编程模式以及一些新独特的功能,Swift 语言受到了苹果应用开发人员的关注。但是,究竟这门新的编程语言使用感受如何呢?在苹果全球开发者大会(WWDC 2015)召开之前, SlideShare 移动应用的软件开发工程师 Kyle Sherman 分享了自己的一些心得体会

在 Swift 发布以后,SlideShare 团队在第一时间就开始研究这门新的语言,并在 4 个月后发布了 SlideShare 的 1.0.0 版本。当时,这是苹果商店中少数几个使用 Swift 开发的软件之一。目前,SlideShare 已经历经 11 次升级,到了 1.6 版本。首先,Kyle 说明了 SlideShare 团队使用 Swift 的原因。简单而言,使用 Swift 是因为其与 Objective-C 之间良好的互操作性、独特的语法特性以及安全的编程模式。尤其是良好的互操作性保证了使用由 Objective-C 编写的 LinkedIn 框架以及一些开源的第三方源代码的便捷性。

此外,Swift 与 Ruby 或者 Python 这样的脚本语言语法类似,保证了 SlideShare 团队可以迅速上手。而且,作为一个升级如此频繁的软件的开发人员,kyle 表示 Swift 语言的迅速变化完全不是问题。因此, SlideShare 的工程经理 Francisco Meza 表示使用 Swift 带来了诸多好处。除了自定义的一个子类、一些开源的库、LinkdedIn 内部的开发库以及一个内部的 Core Data 接口等,SlideShare 绝大部分代码都采用了 Swift 进行编写。

接下来,Kyle 详细讲述了 Swift 的诸多优点。在与 Objective-C 的互操作性方面,Swift 用户在桥接的位置添加一个头文件就可满足大部分情况的需求。只是在使用 NSDictionary 以及 C 或者 Objective-C 创建的枚举时,用户需要特别注意。至于 Swift 的语法与特性方面。相比于 Objective-C 或者 C++,Swift 去掉了一些不方便的语法约束。例如,在 Swift 中存在一个与 C/Objective-C 中的 block 功能很像的概念——closure。但是,closure 可以省略调用函数时的类型声明以及 return 的书写。这样,代码在保证易读的同时将会更加灵活和自然。

另外,Swift 中的泛型代码可以让开发人员定义适用于任何类型的、灵活且可重用的函数和类型。目前,许多 Swift 标准库都采用泛型代码来构建。最后,作为 Swift 的一个重要特性,运算符重载允许用户对现有的作用在特定的结构体和类上的操作符功能进行修改。虽然 SlideShare 中还并没有用到运算符重载,但 Kyle 表示早在使用 Objective-C 的时候,他就有使用该特性的需求。

Swift 在安全方面所做的加强体现在以下几个方面。

  1. Swift 的可选类型会进行编译检查(如 nil 检测等),防止一些常见的运行时错误。
  2. Swift 的条件语句中循环 / 判断条件不需要括号,但循环 / 判断体(body)必需括号。这一特性可以有效的减少条件语句中因为语句所属层次错误引起的 bug。
  3. Swift 初始化包括了很多过程。其中,两段式构造过程的使用让构造过程更安全,同时在整个类层级结构中给予了每个类完全的灵活性。而且,Swift 编译器会执行四种有效的安全检查,以确保两段式构造过程能顺利完成。
  4. Switch 语句中每一个可能的值都必须要有一个 case 分支与之对应。而且,当匹配的 case 分支中的代码执行完毕后,程序会直接终止 switch 语句。
  5. Swift 不支持隐式类型转换(Implicitly casting)。强制类型转换使用 is 和 as 操作符实现。在 as 操作符后加一个“?”可以有效避免 nil 引起的程序崩溃。
  6. Swift 中支持 public、private、internal 以及 final 等关键字,可以控制访问方法或函数的权限。

当然,除了这些优点,SlideShare 团队也发现了 Swift 的一些缺点。这包括从单行表达式闭包中隐式返回结果可能会引起编译错误、类中的函数无法返回该类型的数据和函数 / 方法中的参数命名不清晰等。而且,Swift 各个版本中也存在一些问题,诸如编译时间较长且受 CPU 影响明显、当 SourceKit 崩溃时语法高亮也会失效、实时语法检查有一定的延迟、 Xcode 升级时代码也要相应的更新、代码莫名的无法编译或引起 IDE/ 计算机崩溃。

不过,随着 Swift 版本的升级,这些问题大部分都得到了一定程度的改善。最重要的是,Kyle 他们在 SlideShare 开发过程中没有遇到 Swift 语言本身引起的问题。


感谢徐川对本文的审校。

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

2015-06-04 09:472087
用户头像

发布了 268 篇内容, 共 125.5 次阅读, 收获喜欢 24 次。

关注

评论

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

私有化部署即时通讯平台,30分钟替换钉钉和企业微信

BeeWorks

花了4天,做了一个公司的管理系统,只需几个步骤

高端章鱼哥

软件开发 低代码 管理系统

在当今信息化社会中的安全大文件传输

镭速

大文件传输 传输大文件

“小巨人”企业数字化解决方案:LeaRun低代码开发平台

力软低代码开发平台

软件测试|使用ChatGPT帮助我们生成测试数据

霍格沃兹测试开发学社

用友与10家数科公司签约,共建行业数智化新生态

用友BIP

数科公司

英特尔发布PresentMon全新工具与GPU Busy全新指标,为发烧友与玩家带来绝佳体验

最新动态

链动2+1模式系统开发

张泽🐟APP小程序开发定制

商业模式 系统开发、 营销模式

东郊到家APP系统开发

张泽🐟APP小程序开发定制

APP开发 系统开发、 预约小程序

Camtasia 2023 mac安装包(视频录制和剪辑软件)中文特别版

mac

Camtasia2023 苹果mac 视频编辑软件 winodws软件下载

IPQ6010 IPQ6018 IPQ6000|20KM+ Long Range Connectivity Trial

wallyslilly

IPQ6010 ipq6018 IPQ6000

开箱即用!教你如何正确使用华为云CodeArts Pipeline!

华为云PaaS服务小智

DevOps 软件开发 华为云

火山引擎携手NVIDIA 开源亿级多媒体处理框架BMF

科技热闻

五脏俱全,搭建部署多人语音厅源码功能分析

山东布谷网络科技

直播源码

自带云盘的内网即时通讯软件,保障数据在公司局域网内安全流通

BeeWorks

服务中断、系统宕机...GitLab崩了怎么办?

树上有只程序猿

DevOps gitlab

校源行丨开放原子开源基金会赴北华大学走访交流

开放原子开源基金会

开源

最新 Turbo Boost Switcher Pro 补丁安装资源

胖墩儿不胖y

Mac 软件 系统优化

如何将应用程序发布到 App Store

雪奈椰子

ios iOS Developer

前端开发进阶:前端开发中如何高效渲染大数据量?

袋鼠云数栈

大数据 前端

JMeter 接口自动化测试的使用技巧

Liam

测试 Jmeter 性能测试 自动化测试 测试工具

OpenHarmony应用实现二维码扫码识别

OpenHarmony开发者

OpenHarmony

ARTS打卡第一天

请务必优秀

选择适合企业的文件传输方式:SFTP与SCP的比较及应用场景分析

镭速

企业文件传输工具 文件传输工具

数字藏品NFT系统开发

张泽🐟APP小程序开发定制

区块链、 数字藏品开发

软件测试|如何使用ChatGPT生成自动化测试脚本

霍格沃兹测试开发学社

探析低代码开发平台的核心能力

互联网工科生

软件开发 低代码 企业级应用程序开发 JNPF

华为音乐花式奏响七夕乐章,“空间·古典主义”音乐会空降宁波

最新动态

从SlideShare的开发看Swift语言_移动_张天雷_InfoQ精选文章