歡迎加入QQ討論群258996829
來自星星的你 頭像
蘋果3袋
3
來自星星的你

從SlideShare的開發(fā)看Swift語言

發(fā)布時間:2015-06-06 12:24  回復(fù):0  查看:2777   最后回復(fù):2015-06-06 12:24  

作為蘋果公司推出的iOS和OS X應(yīng)用程序編寫語言,Swift已經(jīng)走過了一年的路程。因其安全的編程模式以及一些新獨特的功能,Swift語言受到了蘋果應(yīng)用開發(fā)人員的關(guān)注。但是,究竟這門新的編程語言使用感受如何呢?在蘋果全球開發(fā)者大會(WWDC 2015)召開之前,SlideShare移動應(yīng)用的軟件開發(fā)工程師Kyle Sherman分享了自己的一些心得體會。

在Swift發(fā)布以后,SlideShare團隊在第一時間就開始研究這門新的語言,并在4個月后發(fā)布了SlideShare的1.0.0版本。當時,這是蘋果商店中少數(shù)幾個使用Swift開發(fā)的軟件之一。目前,SlideShare已經(jīng)歷經(jīng)11次升級,到了1.6版本。首先,Kyle說明了SlideShare團隊使用Swift的原因。簡單而言,使用Swift是因為其與Objective-C之間良好的互操作性、獨特的語法特性以及安全的編程模式。尤其是良好的互操作性保證了使用由Objective-C編寫的LinkedIn框架以及一些開源的第三方源代碼的便捷性。

此外,Swift與Ruby或者Python這樣的腳本語言語法類似,保證了SlideShare團隊可以迅速上手。而且,作為一個升級如此頻繁的軟件的開發(fā)人員,kyle表示Swift語言的迅速變化完全不是問題。因此,SlideShare的工程經(jīng)理Francisco Meza表示使用Swift帶來了諸多好處。除了自定義的一個子類、一些開源的庫、LinkdedIn內(nèi)部的開發(fā)庫以及一個內(nèi)部的Core Data接口等,SlideShare絕大部分代碼都采用了Swift進行編寫。

接下來,Kyle詳細講述了Swift的諸多優(yōu)點。在與Objective-C的互操作性方面,Swift用戶在橋接的位置添加一個頭文件就可滿足大部分情況的需求。只是在使用NSDictionary以及C或者Objective-C創(chuàng)建的枚舉時,用戶需要特別注意。至于Swift的語法與特性方面。相比于Objective-C或者C++,Swift去掉了一些不方便的語法約束。例如,在Swift中存在一個與C/Objective-C中的block功能很像的概念——closure。但是,closure可以省略調(diào)用函數(shù)時的類型聲明以及return的書寫。這樣,代碼在保證易讀的同時將會更加靈活和自然。

另外,Swift中的泛型代碼可以讓開發(fā)人員定義適用于任何類型的、靈活且可重用的函數(shù)和類型。目前,許多 Swift 標準庫都采用泛型代碼來構(gòu)建。最后,作為Swift的一個重要特性,運算符重載允許用戶對現(xiàn)有的作用在特定的結(jié)構(gòu)體和類上的操作符功能進行修改。雖然SlideShare中還并沒有用到運算符重載,但Kyle表示早在使用Objective-C的時候,他就有使用該特性的需求。

Swift在安全方面所做的加強體現(xiàn)在以下幾個方面。

  1. Swift的可選類型會進行編譯檢查(如nil檢測等),防止一些常見的運行時錯誤。
  2. Swift的條件語句中循環(huán)/判斷條件不需要括號,但循環(huán)/判斷體(body)必需括號。這一特性可以有效的減少條件語句中因為語句所屬層次錯誤引起的bug。
  3. Swift初始化包括了很多過程。其中,兩段式構(gòu)造過程的使用讓構(gòu)造過程更安全,同時在整個類層級結(jié)構(gòu)中給予了每個類完全的靈活性。而且,Swift 編譯器會執(zhí)行四種有效的安全檢查,以確保兩段式構(gòu)造過程能順利完成。
  4. Switch語句中每一個可能的值都必須要有一個case分支與之對應(yīng)。而且,當匹配的 case 分支中的代碼執(zhí)行完畢后,程序會直接終止switch語句。
  5. Swift不支持隱式類型轉(zhuǎn)換(Implicitly casting)。強制類型轉(zhuǎn)換使用is和as操作符實現(xiàn)。在as操作符后加一個“?”可以有效避免nil引起的程序崩潰。
  6. Swift中支持public、private、internal以及final等關(guān)鍵字,可以控制訪問方法或函數(shù)的權(quán)限。

當然,除了這些優(yōu)點,SlideShare團隊也發(fā)現(xiàn)了Swift的一些缺點。這包括從單行表達式閉包中隱式返回結(jié)果可能會引起編譯錯誤、類中的函數(shù)無法返回該類型的數(shù)據(jù)和函數(shù)/方法中的參數(shù)命名不清晰等。而且,Swift各個版本中也存在一些問題,諸如編譯時間較長且受CPU影響明顯、當SourceKit崩潰時語法高亮也會失效、實時語法檢查有一定的延遲、Xcode升級時代碼也要相應(yīng)的更新、代碼莫名的無法編譯或引起IDE/計算機崩潰。

不過,隨著Swift版本的升級,這些問題大部分都得到了一定程度的改善。最重要的是,Kyle他們在SlideShare開發(fā)過程中沒有遇到Swift語言本身引起的問題。


感謝徐川對本文的審校。

您還未登錄,請先登錄

熱門帖子

最新帖子

?