swift2.0 - 渐来的美好也许应该要收回我之前说的话了

前些时iOS9携带swift2.0更新,我也将项目更新到了最新的版本上线。

xcode在Edit菜单下,convert->To Latest Swift Syntaxconvert->To Modern Objective-C Syntax,这两个功能能帮助调整优化代码,并让人快速了解语言的最新动态。

swift1.x时我曾发牢骚说swift的难用(http://www.jb51.cc/article/p-voejtkzp-es.html),当时除了编辑器频繁崩溃、调试器断点不准等工具不够成熟的原因之外,语言也没表现出让人欣喜的特性,而为了兼容iOS SDK,更有许多让人不爽的hack。

不过毕竟又多了一年的改善,工具有了很大进步。现在虽然偶尔编辑器会不进行补全、调试器单步依然乱跳之外,比之前已经好多了。语言上,swift2.0如下特性还是很不错的:

1. guard关键字。像我这种在函数入口,对function input不验证不舒服斯基的人,感觉生活一下美好了。guard还附带了optional unwrapping,赞!

2. forced exception。exception的定位是:系统无法正常运行了,必须要有特殊的干预,需要catch来特殊处理;而普通出错的NSError,其实可以认为是有不同返回情况的正常调用。这样的设计思路,能够让开发者能更清晰的知道何处必须单独处理,何处可以抓大放小。

3. 关于struct的言论。WWDC 2105中有一个讲座,言及truct优于class之处,其中提到struct的数据安全性,感觉还是有一些道理的。当然,我们这种从C走过来的人,对效率的追求已经深入骨髓,因此对于C++总是会不自觉地推崇。但从另一方面来看,在现在云计算的热潮下,单台计算机的计算效率也许真的不如原来那么重要了。从程序角度而言,算法效率上的改善无论何时都是第一要义的,语言特性所带来的效率提升(比如越界检查检查、数据拷贝等),则应该做在编译器侧,而不应该是代码需要关注的问题。从这个角度而言,pass by pointer,pass by value这类C++中让人引以为傲的精微之处,也许真的没那么重要了。(前些时C++11中的move constructor还让我眼前一亮,感叹于c++对于数据拷贝的细致;其与swift中关于struct的言论,可以认为是两种不同的编程哲学,谈不上谁对谁错,可以认为是各自有其适用情形)


希望swift越来越好。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...