準(zhǔn)備好了嗎,Swift以后就不需要 breaking code 啦

原文連接: Getting ready for Swift to stop breaking code
原文發(fā)布日期:2016-2-29
文章來源:
作者:
譯者:Crystal Sun
校對(duì):
定稿:

當(dāng)我們提到 code breaking 時(shí),差不多是指下面的兩個(gè)含義。

  1. 語音語義發(fā)生了變化。這時(shí)你需要重構(gòu)代碼,典型例子就是 Swift 從 (..., $NSError) -> Result? 格式改為錯(cuò)誤拋出。
  2. 語言語法發(fā)生了變化。這時(shí)只需進(jìn)行遷移,然后大部分代碼或多或少都能得到修復(fù)(還有一小部分需要微調(diào))。

后者會(huì)帶來各種不方便,但前者卻是破壞性的。如果我猜的沒錯(cuò),Swift 3 的目標(biāo)是進(jìn)行最后一次內(nèi)部調(diào)整,等到 Swift 4 的時(shí)候,不會(huì)再重新設(shè)計(jì)語言了,而是增加新的特性。

Chris Lattener 寫道,

贊同 —— Swift 3 的源碼調(diào)整已經(jīng)完成了,所以我們會(huì)提供非常棒的遷移工具,幫助人們能夠迅速完成遷移工作。除了 Swift 3 外,Swift 社區(qū)將會(huì)成為多元化社區(qū),支持多個(gè)平臺(tái)系統(tǒng),創(chuàng)造出更多不同的工具和 IDE 供開發(fā)者使用。

正因如此,在 Swift 3 發(fā)布之后,source breaking changes 會(huì)更加困難,我們傾向于盡可能地把 breaking 放到 Swift 3 中。

更多

雖然 Swift 4 可能也有一些breaking,不過我們更希望能夠減少breaking的情況

時(shí)間框架

這也是為什么我們要努力把 Swift 3 完善好的原因,在目前的時(shí)間限制下,即使這意味著要推掉一些有趣的工作……
……

我認(rèn)為現(xiàn)在沒有必要討論 Swift 3 之后的特性,也不會(huì)帶來什么好處。沒有足夠的資源讓核心團(tuán)隊(duì)成員參與討論,我們更希望能夠讓社區(qū)和開源貢獻(xiàn)者將主要的精力集中在 Swift 3 上,力爭讓 Swift 3 功能更加強(qiáng)悍。

Swift 3 的特性能夠預(yù)示 Swift 4 的走向。盡管有一些特性我們能夠預(yù)知(例如并發(fā)會(huì)成為 Swift 的一個(gè)特性),仍然有很多完全不同的設(shè)計(jì)方向值得我們探討和嘗試。雖然現(xiàn)在不太可能來一場討論,權(quán)衡決定哪種是最好的解決方案,不過大量的討論必定會(huì)浪費(fèi)時(shí)間。

現(xiàn)在需要所有相關(guān)的人等到合適的時(shí)間再來討論,雖然這需要足夠的耐心和克制,不過對(duì)每個(gè)人來說,這是最好的。今年秋天(北半球)很快就要到了,我們還有太多重要的工作需要完成。

將 Swift 3 的各種目標(biāo)固定下來列出時(shí)間表這件事可不太容易,尤其是 Swift 開源之后。

預(yù)測 Swift 3 最終結(jié)果(比如:“Swift 3 會(huì)實(shí)現(xiàn)我們的目的嗎?”),本身就是一件危險(xiǎn)的事情,也不可能做到完美預(yù)測。在語言設(shè)計(jì)和增加特性上有太多的未知了(比如:我們連一個(gè)具體的設(shè)計(jì)稿都沒有,你如何知道要花費(fèi)多少時(shí)間來執(zhí)行呢?),隨著新的問題不斷出現(xiàn),我們的工作量又在不斷增加,當(dāng)然了,需要開源社區(qū)來確認(rèn)有哪些新問題。更不可能預(yù)測開源的貢獻(xiàn)者能提供多少時(shí)間和工作量。

我們對(duì)一些好的想法說“不”的部分原因就是我們設(shè)計(jì)和執(zhí)行的受限。我們對(duì) Swift 3 有較高的目標(biāo)要求,但是我們也不能百分百確定我們能完全實(shí)現(xiàn)我們的目標(biāo)(這也是“目標(biāo)”的原因了,而不是“確定性”)。我覺得我們在 Swift 3 上要行動(dòng)一致,集中解決語言里的核心缺陷,修復(fù)各種問題,設(shè)計(jì)影響 ABI 穩(wěn)定性的 resilience 特性,同時(shí)呈現(xiàn)小范圍的擴(kuò)展。不同于之前討論的大的擴(kuò)展,小范圍擴(kuò)展不會(huì)影響核心模塊( 例如成員初始化改造 the menberwise init revamp ),我希望能在 Swift 3 里實(shí)現(xiàn)部分?jǐn)U展。

總而言之,關(guān)于 Swift 3 是什么的問題,已經(jīng)上升到更高的層次,Swift 3 能夠讓更多的人接受 Swift 語言,人們在 Linux 上運(yùn)行 Corelibs + Swift 變成現(xiàn)實(shí),無疑能夠吸引更多的人來使用 Swift ,SwiftPM 已經(jīng)逐漸完善,形成了自己的體系,Swift 語言和 stdlib 標(biāo)準(zhǔn)庫函數(shù) 更加成熟。

這意味著什么?恩,首先,從 Swift 2 過渡到 Swift 3 不可避免地將是懸崖式的過渡,大量的代碼需要重寫,Cocoa 的重命名工作也要落地了,我們將再次創(chuàng)建令人矚目的科技成果。同樣地,我們應(yīng)該嘗試將 “ 重新布局式的 ” 改變放到 Swift 3 中,如果可能的話,Swift 3 到 Swift 4 的過渡盡可能平緩一些。現(xiàn)在人們理解接受 Swift 的進(jìn)化改變的種種不便,不過我們不能一直這樣。我認(rèn)為我們不能百分之百地保證從 Swift 3 到 Swift 4 的代碼兼容性,我希望從 Swift 2 到 Swift 3 的代碼升級(jí)能夠簡單一些。

最后一點(diǎn),留意 Cocoa 的重命名工作,這將是一項(xiàng)令人矚目的成就。

本文由 SwiftGG 翻譯組翻譯,已經(jīng)獲得作者翻譯授權(quán)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,256評(píng)論 4 61
  • 非常溫心的海鮮面 吃過一口的海鮮面 "只要人人都獻(xiàn)出一點(diǎn)愛,世界將變成美麗的人間--"每當(dāng)我聽到這感人的旋律時(shí),...
    Mr羅_c047閱讀 609評(píng)論 0 0

友情鏈接更多精彩內(nèi)容