99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
贏了現(xiàn)在輸了未來(lái) 頭像
蘋果2袋
2
贏了現(xiàn)在輸了未來(lái)

是時(shí)候適配 Swift 3 了嗎——專訪 LINE iOS 開(kāi)發(fā)工程師王巍

發(fā)布時(shí)間:2016-07-26 23:28  回復(fù):0  查看:3216   最后回復(fù):2016-07-26 23:28  

王?。ˊonevcat),江湖人稱“喵神”,iOS 和 Unity3D 開(kāi)發(fā)者,旅居日本,目前供職于 LINE,著有《Swifter - 100 個(gè) Swift 必備 tips》,同時(shí)也是翻譯項(xiàng)目 ObjC 中國(guó)的組織者和管理者,維護(hù) VVDocumenter-Xcode 及 Kingfisher 等開(kāi)源項(xiàng)目。

是時(shí)候適配 Swift 3 了嗎——專訪 LINE iOS 開(kāi)發(fā)工程師王巍 王巍 LINE iOS開(kāi)發(fā)工程師(Photo by 李濤 Geek2Startup)

前言

對(duì)于眾多 iOS 開(kāi)發(fā)者來(lái)說(shuō),提升技能最多關(guān)注的非唐巧與王?。ㄒ韵路Q“喵神”)的博客莫屬。印象里的喵神是當(dāng)之無(wú)愧的「三好」,比如在今年的 WWDC 即將開(kāi)始之前,喵神便特地為初次參會(huì)的開(kāi)發(fā)者寫了攻略。而即使是我這個(gè)技術(shù)渣去請(qǐng)教他各種問(wèn)題,也會(huì)耐心細(xì)致地解答。除卻技術(shù)問(wèn)題本身,筆者也很想知道,在日常的項(xiàng)目開(kāi)發(fā)中,喵神是否也會(huì)碰到一些讓他頗感頭疼的問(wèn)題,結(jié)果他是這樣說(shuō)的——“技術(shù)上的問(wèn)題倒是都不難解決,最困難的還是和人交流”。不禁讓我想起了熱愛(ài)寫代碼、玩游戲、讀書而不太樂(lè)于交流卻在不久前被我強(qiáng)拉著說(shuō)了幾個(gè)小時(shí)話的 YYKit 作者 @ibireme。

去年 MDCC 移動(dòng)開(kāi)發(fā)者大會(huì)便曾邀請(qǐng)?jiān)谌毡镜倪魃窕貒?guó)分享,然彼時(shí)因剛榮升奶爸,牽掛家人未能成行。而今年,在 MDCC 再次發(fā)出邀請(qǐng)時(shí),他欣然應(yīng)允,并與我們一起共同策劃了整個(gè) iOS 開(kāi)發(fā)峰會(huì),希望能夠?yàn)閲?guó)內(nèi)的 iOS 開(kāi)發(fā)者們帶來(lái)「高質(zhì)量且實(shí)用」的新技術(shù)與成熟項(xiàng)目的經(jīng)驗(yàn)分享與實(shí)操演示。

而這次的采訪一方面源于 MDCC 2016,另一方面,也是基于目前在 iOS 開(kāi)發(fā)者群體中所面臨的棘手問(wèn)題,比如:

-11W+行的代碼來(lái)適配 Swift 3 是一種什么樣的感受? 

-感覺(jué)自己被掏空。。。 

-∑(O_O;)

這是一段真實(shí)的對(duì)話,主人公是國(guó)內(nèi)一個(gè)非常有格調(diào)的美食類 App 的 iOS 負(fù)責(zé)人。在 Swift 3 發(fā)布后,他們的團(tuán)隊(duì)便率先開(kāi)始了對(duì)于 Swift 3 的適配,然而,「被折騰得死去活來(lái)」是他的原話,語(yǔ)法改完,依然跑不起來(lái)。而筆者在與多位 iOS 工程師朋友交流時(shí),也發(fā)現(xiàn),蘋果簡(jiǎn)直讓全世界的 iOS 開(kāi)發(fā)者與 Swift 談了一場(chǎng)「虐戀」。于是,我便帶著他們當(dāng)前所面臨的以 Swift 3 為主的問(wèn)題請(qǐng)教了喵神。

采訪

請(qǐng)分享一下您當(dāng)前正在做的事情。

王?。赫趯⑽业膸讉€(gè) Swift 寫的開(kāi)源項(xiàng)目(比如 Kingfisher 和 Rainbow)進(jìn)行 Swift 3 適配。Swift 3 中 API Guide 和很多現(xiàn)有的內(nèi)容都發(fā)生了改變,所以進(jìn)行版本適配需要花不少精力。

在日常的開(kāi)發(fā)中,您有遇到哪些比較頭疼的問(wèn)題,以及如何解決的?

王巍:技術(shù)上的問(wèn)題倒是都不難解決,最困難的還是和人交流。比如如何與策劃或者設(shè)計(jì)人員協(xié)調(diào),如何合作來(lái)打磨用戶滿意,維護(hù)方便的優(yōu)秀項(xiàng)目,是比大多數(shù)技術(shù)問(wèn)題要困難的挑戰(zhàn)。

目前在 iOS 開(kāi)發(fā)上您有哪些特別關(guān)注的技術(shù)?正在深度研究的是?

王?。鹤詮娜ツ?WWDC 以來(lái),一直對(duì)面向協(xié)議編程和 Swift 中的泛型應(yīng)用很感興趣?,F(xiàn)在正在挖掘泛型和 Cocoa 到底能夠融合到什么樣的程度,這個(gè)新的編程范式是否能夠很好地用在 App 開(kāi)發(fā)中。

在日本以及 LINE 公司工作,有哪些深有感觸的事情?比如技術(shù)層面、團(tuán)隊(duì)氛圍等方面。

王巍: 日本的開(kāi)發(fā)團(tuán)隊(duì)在技術(shù)上可能沒(méi)有太多能值得稱道的地方,但是團(tuán)隊(duì)里開(kāi)發(fā)者的認(rèn)真和嚴(yán)謹(jǐn)確實(shí)是讓人佩服。相對(duì)來(lái)說(shuō),LINE 的組織架構(gòu)比較扁平,工程師之間,工程師與策劃或者設(shè)計(jì)之間,都是直接進(jìn)行交流。這種時(shí)候開(kāi)發(fā)文檔和企劃書就尤其重要。而日本不少開(kāi)發(fā)者能夠做到絲毫不差地按照開(kāi)發(fā)文檔交付項(xiàng)目,專業(yè)態(tài)度非常好。


現(xiàn)在還不到實(shí)際項(xiàng)目適配Swift 3的時(shí)候

請(qǐng)問(wèn)您對(duì)于今年 WWDC 上 Swift 3 升級(jí)有著怎樣的看法?

王巍: Swift 3 是這門語(yǔ)言開(kāi)源后的第一個(gè)大版本,這次更新的幅度遠(yuǎn)超以往任何一次升級(jí),也可以預(yù)見(jiàn),之后 Swift 的變化也不再可能像這次這么大的幅度。綜合來(lái)說(shuō),Swift 的開(kāi)發(fā)團(tuán)隊(duì)想要在新版本中解決從 Objective-C 轉(zhuǎn)換中最后的一些遺留問(wèn)題。同時(shí),在開(kāi)源社區(qū)的幫助下,很多開(kāi)發(fā)團(tuán)隊(duì)沒(méi)有考慮到的細(xì)節(jié)也得到了完善。Swift 的開(kāi)源帶來(lái)了社區(qū)對(duì)這門語(yǔ)言更深入的了解,以及更迅速的進(jìn)化。Swift 3 的更新的方向也十分令人激動(dòng)。

您如何看待 Swift 3 包含 ABI 不穩(wěn)定、語(yǔ)法變太多、API 變了又變?什么時(shí)候能用上?

王?。?API 上最大的變化的原因是要遵循新的 API Guideline,而新的 API Guideline 的目的只有一個(gè),那就是讓通過(guò) Swift 使用 Cocoa 框架更加自然。如果說(shuō) Swift 1 和 2 還是帶著 Objective-C 的枷鎖跳舞的話,Swift 3 中這個(gè)限制在很大程度上可以說(shuō)消失了。Swift 3 中開(kāi)發(fā)者可以用更 Swifty 的方式來(lái)使用這門語(yǔ)言,同時(shí)這也意味著 Swift 和 Objective-C 之間的聯(lián)系將更少(畢竟如果要提供兩種語(yǔ)言都合適的 API 的話,需要很多額外工作量)。

在實(shí)際項(xiàng)目中,現(xiàn)在就適配 Swift 3 是否適合?《Swifter - 100 個(gè) Swift 必備 tips》現(xiàn)在有更新計(jì)劃?

王?。?實(shí)際項(xiàng)目的話建議還是等一段時(shí)間。因?yàn)?Swift 3 改動(dòng)很大,所以不一定所有第三方框架都會(huì)在第一時(shí)間進(jìn)行適配。另外,對(duì)于較大項(xiàng)目,即使在自動(dòng)遷移的幫助下,想要全面轉(zhuǎn)向 Swift 3 的 API 也需要花費(fèi)不少精力。Xcode 8 中 Swift 2.3 和 Swift 3 可以同時(shí)共存,Apple 也將接受這兩個(gè)版本的 Swift 項(xiàng)目,所以 App 的項(xiàng)目并不著急馬上進(jìn)行適配。不過(guò)如果你是框架作者的話,盡早將項(xiàng)目轉(zhuǎn)為 Swift 3 會(huì)是很好的選擇。《Swifter - 100 個(gè) Swift 必備 tips》有計(jì)劃更新到 Swift 3,不過(guò)鑒于現(xiàn)在 beta 版也還不穩(wěn)定,有不少特性還沒(méi)有最后實(shí)裝,所以這本書的更新會(huì)在稍后一些時(shí)候進(jìn)行。

在將項(xiàng)目代碼升級(jí)至 Swift 3 的過(guò)程中,都遇到過(guò)哪些問(wèn)題?

王?。?我正在將我的開(kāi)源框架升級(jí)到 Swift 3,遇到的最大的問(wèn)題是 API Guideline 的一些細(xì)節(jié)上的處理。大部分時(shí)候一個(gè) API 的命名是比較容易確定的,但是對(duì)于某些模棱兩可,可能適用于多條規(guī)范的 API 名字,在處理上需要考慮更多東西。舉個(gè)例子,不少接受通用類型(比如 Int,String)作為參數(shù)的方法,它們的名字就難以確定。

現(xiàn)如今,很多新加入的 iOS 開(kāi)發(fā)者首選學(xué)習(xí)的是 Swift,是否意味著 OC 式的語(yǔ)法、API 等都可以舍棄了?

王?。?Swift 作為入門 iOS 開(kāi)發(fā)來(lái)說(shuō)是非常理想的,但是國(guó)內(nèi)在接受新技術(shù)這方面相對(duì)似乎要慢一些,所以在之后一年可能還是需要簡(jiǎn)單了解 Objective-C 的語(yǔ)法。國(guó)內(nèi) Swift 適配的速度較慢的一個(gè)重要原因是 Swift 程序的運(yùn)行時(shí)會(huì)被打包到 App 中,導(dǎo)致體積增大,而國(guó)內(nèi)用戶恰好比較看重流量。所以希望在 Swift 運(yùn)行時(shí)被集成到系統(tǒng)中后國(guó)內(nèi)的 Swift 應(yīng)用和開(kāi)發(fā)能有一個(gè)大的增長(zhǎng),這樣我們就可以擺脫 Objective-C 的一套不安全和相對(duì)落后的東西了。

開(kāi)源的Swift對(duì)于跨平臺(tái)應(yīng)用開(kāi)發(fā)是否會(huì)造成影響?

王?。?對(duì)于移動(dòng)端來(lái)說(shuō),Swift 還不能用于 Android 開(kāi)發(fā),所以并不會(huì)產(chǎn)生什么影響。不過(guò),相對(duì)來(lái)說(shuō),Android 開(kāi)發(fā)可能會(huì)由于 Swift 的壓力,而對(duì) Kotlin 之類的更先進(jìn)的語(yǔ)言進(jìn)行一些嘗試。對(duì)于服務(wù)器端來(lái)說(shuō),Swift 雖然可以進(jìn)行開(kāi)發(fā),但是相應(yīng)的工具鏈和生態(tài)相比其他成熟的服務(wù)器語(yǔ)言來(lái)說(shuō)還有一定差距。一些 Swift 開(kāi)發(fā)者可能會(huì)嘗試使用這門語(yǔ)言進(jìn)行服務(wù)器開(kāi)發(fā),這樣他們就能夠在客戶端和服務(wù)器統(tǒng)一語(yǔ)言,甚至共用一些模塊。不過(guò)現(xiàn)在都處于早期的嘗試中,要說(shuō)會(huì)造成影響還為時(shí)過(guò)早。


編程語(yǔ)言與書籍啟發(fā)

就不斷演化的語(yǔ)言來(lái)說(shuō),我們正在向何處去?比如,5 年后會(huì)如何?對(duì)于您來(lái)說(shuō),您認(rèn)為一門語(yǔ)言向開(kāi)發(fā)者提供什么是最重要的?

王?。?最近幾年編程語(yǔ)言有一種趨同的趨勢(shì),這也是最近幾年大家在工程實(shí)踐中總結(jié)的一些經(jīng)驗(yàn)的體現(xiàn),比如更多地使用函數(shù)式、避免 null 指針等等??傮w來(lái)說(shuō),編程語(yǔ)言正在向更安全,更易于開(kāi)發(fā)者書寫的方向發(fā)展。要預(yù)測(cè)五年后的情況太難,不過(guò)相信之前的這些趨勢(shì)會(huì)繼續(xù)發(fā)展。另外,相比于一些通用型的語(yǔ)言,那些特別設(shè)計(jì)來(lái)針對(duì)某一專門領(lǐng)域的語(yǔ)言也將會(huì)有很大空間。

迄今為止,對(duì)于您在從事開(kāi)發(fā)方面影響最大的著作是?您有著哪些啟發(fā)?

王?。?Robert C. Martin 的 The Clean Coder。這本書教會(huì)了我如何以一個(gè)專業(yè)程序員的思維來(lái)思考問(wèn)題,也讓我明白了開(kāi)發(fā)中必須做出的一些取舍。


MDCC 2016

在今年的 MDCC 移動(dòng)開(kāi)發(fā)者大會(huì)上,準(zhǔn)備和開(kāi)發(fā)者們分享什么?

王巍: 可能會(huì)分享一些面向協(xié)議編程和泛型如何與 Cocoa 結(jié)合使用的實(shí)例,因?yàn)樵陧?xiàng)目里嘗試用了一些,覺(jué)得對(duì)改善現(xiàn)有設(shè)計(jì)很有幫助。

您最期待在 MDCC 2016 上看到哪些內(nèi)容?收獲什么?

王巍: 希望能看到更多的改善項(xiàng)目設(shè)計(jì),組織架構(gòu)以及可維護(hù)性的思路,因?yàn)楣ぷ髦械能浖_(kāi)發(fā)我自己所追求的主要是代碼簡(jiǎn)潔可讀以及保證可維護(hù)性,因此如果能有一些這方面的啟發(fā)的話,會(huì)對(duì)日常開(kāi)發(fā)有很大幫助。

最后,以一張今年初與iOS眾大神的合影結(jié)束這次的采訪,同時(shí)感謝喵神于百忙之中的答疑解惑。9 月 23-24 日,在北京? 國(guó)家會(huì)議中心舉行的MDCC 2016移動(dòng)開(kāi)發(fā)者大會(huì)上,喵神將在現(xiàn)場(chǎng)進(jìn)行交流與分享,歡迎面基。


是時(shí)候適配 Swift 3 了嗎——專訪 LINE iOS 開(kāi)發(fā)工程師王巍 Swifter (Photo by 李濤 Geek2Startup)


轉(zhuǎn)自微信號(hào):程序人生

您還未登錄,請(qǐng)先登錄

熱門帖子

最新帖子

?