騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

jopen 9年前發布 | 15K 次閱讀 Swift Apple Swift開發
 

簡介

Swift語言從 WWDC2014發布開始,到現在已經發展了一年多時間,越來越多的開發者也開始學習和使用這門語言。但就我所 了解的情況來看,在實際項目中Swift的應用還是比較少。開發者給它的評價也是褒貶不一,有的說它的安全性高,有的說它的特性多,有的說它的學習成本 高,還有的說它是一個玩具語言不適合工程。其實這都很正常,因為一千個人眼中有一千個哈姆雷特,語言的喜好本身就是一件很主觀的事情。具體這個語言怎么 樣,適不適合工程,需要每個人實踐之后才能得出自己結論。

Swift 的特點

支持 Unicode

騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

代碼原生支持 Unicode字符。不僅在字符串中,甚至變量名、函數名等都能直接使用Unicode字符。雖然看上去很強大,但似乎并沒有什么用,應該沒人喜歡在編程時不停的切換輸入法吧?

安全的類型

采用嚴格的類型,并去掉了隱式類型轉換:

騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

隱式類型轉換一直是一把雙刃劍,雖然使用便利,但是可能引入一些很難調試的 BUG,不容忽視。把隱式類型轉換摘除,利大于弊。

從類型層面將空值 nil隔離,使用時要求對空值進行處理:

騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

嚴格的語義邏輯

騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

Swift對 C語系一些常見的語義邏輯漏洞進行了修改,比如if等條件限定為Bool類型,賦值“=”操作不再有返回值等(其實 有,是Void,即空元組“()”)。雖然使用上沒有之前那么方便和靈活,但這種改變能杜絕很大一部分的手誤BUG,比如“==”寫成“=”,還能避免一 些偷懶所引入的很隱秘的坑,對程序的穩定性和程序員好習慣的培養有很大幫助。

易用性

沿用并完善了 Objective-C的函數中綴調用方式,參數有了真正的名字,調用時帶上參數名能讓函數接口更容易理解,可讀性更好:

騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

優化了可變參數定義和使用方式:

騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

C語系中定義可變參數還需要va_list、va_start等,一段時間不用根本想不起來怎么寫,還得上網查,而在Swift中只需要遍歷一個數組就能取到所有參數,非常方便。

優化了控制流的使用:

騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

Switch的 case可以連寫,而且加入了很多實用的匹配模式,比如匹配范圍、元組、條件等,還可以自定義匹配模式,十分強 大。另外分支默認是break方式,不像在C語言中,明知道90%的case都是要break的,還要強制寫上。還有一個很好的優化就是加入了跳轉標簽, 在多重循環間控制轉移的時候更靈活了。

加入了很多實用語法糖,僅僅一個閉包就有這么多簡寫方式:

騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

這些語法糖能節省大量的開發時間和代碼量,使用得當也能讓代碼更清晰,可讀性更好。當然如果濫用的話可能起反作用。

豐富的語言特性

Swift支持類、協議、繼承、多態等面向對象的語言特性:

騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

也有高級函數、閉包等函數式編程特性:

騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

還有泛類型、泛函數、泛協議等泛型編程特性以及操作符自定義等新特性:

騰訊Bugly干貨分享:淺談Swift在實際項目中的應用

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!