久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Android 開發(fā)者自述:為什么我要改用 Kotlin? | 極客公園

 釋懷齋 2017-05-19

Android 開發(fā)者自述:為什么我要改用 Kotlin,?

黑板報值日生16 小時前
Android 開發(fā)者自述:為什么我要改用 Kotlin,?

編者注:Google I/O 2017 首日 Keynote 剛剛落幕,,其中 Google 宣布 Android 系統(tǒng)將對 Kotlin 提供 first-class 的支持算是一個非常重磅的新聞。對于大眾來說,,Kotlin 編程語言可能是相對陌生的,,它究竟有何過人之處呢?不如讓我們聽聽開發(fā)者是怎么說的,。

本文原載于 (技術小黑屋),,原標題為《為什么我要改用 Kotlin》。本文作者為 Flipboard 中國 Android 研發(fā)工程師段建華,。極客公園已經(jīng)獲得轉載授權,。


寫在前面的話,作為一個不熬夜的人,,一覺醒來發(fā)現(xiàn) Kotlin 成為了 Android 的官方語言,,可謂是大喜過望。為了趁熱打鐵,,我決定提前三天放出原定本周日 Release 的文章,。希望能及時讓大家了解一下 Kotlin。

相信很多開發(fā)人員,,尤其是 Android 開發(fā)者都會或多或少聽說過 Kotlin,,當然如果沒有聽過或者不熟悉也沒有關系。因為本篇文章以及博客后期的內(nèi)容會涉及到很多關于 Kotlin 的知識分享,。

在寫這篇文章前的一個多月,,F(xiàn)lipboard 中國的 Android 項目確定了正式將 Kotlin 作為項目開發(fā)語言,這就意味著新增的代碼文件將以 Kotlin 代碼格式出現(xiàn),,而且同時舊的 Java 代碼也將會陸陸續(xù)續(xù)翻譯成 Kotlin 代碼,。在使用 Kotlin 的這段時間,,被它的簡潔,高效,,快捷等等特點震撼,,所以有必要寫一篇文章來談一談 Kotlin 的特性,如若能取得推廣 Kotlin 的效果則倍感欣慰,。

Kotlin的「簡歷」

  • 來自于著名的 IDE IntelliJ IDEA(Android Studio 基于此開發(fā)) 軟件開發(fā)公司 JetBrains(位于東歐捷克)
  • 起源來自 JetBrains 的圣彼得堡團隊,,名稱取自圣彼得堡附近的一個小島 (Kotlin Island)
  • 一種基于 JVM 的靜態(tài)類型編程語言

來自知名的工具開發(fā)商 JetBrains,也就決定了 Kotlin 的基因中必然包含實用與高效等特征,。那我們接下來看一看 Kotlin 的特點,,當然這也是我改用 Kotlin 的重要原因。

語法簡單,,不啰嗦

屏幕快照 2017-05-18 下午3.42.37.png

  • Kotlin 支持類型推斷,,沒有 Java 那樣的啰嗦。
  • 另外用 var 表示變量,,val 表示常量更加的簡潔
  • 方法也很簡單,,連 function 都縮寫成了 fun,平添了幾分雙關之意,。
  • 類的繼承和實現(xiàn)很簡單,,使用:即可
  • Kotlin 每個句子都不需要加分號 (;)

空指針安全

空指針(NullPointerException 或 NPE)是我們使用 Java 開發(fā)程序中最常見的崩潰了。因為在 Java 中我們不得不寫很多防御性的代碼,,比如這樣:

屏幕快照 2017-05-18 下午4.02.36.png

在 Kotlin 中空指針異常得到了很好的解決,。

  • 在類型上的處理,即在類型后面加上?,,即表示這個變量或參數(shù)以及返回值可以為 null,,否則不允許為變量參數(shù)賦值為 null 或者返回 null
  • 對于一個可能是 null 的變量或者參數(shù),在調(diào)用對象方法或者屬性之前,,需要加上?,,否則編譯無法通過。

如下面的代碼就是 Kotlin 實現(xiàn)空指針安全的一個例子,,而且相對 Java 實現(xiàn)而言,,簡直是一行代碼搞定的。

屏幕快照 2017-05-18 下午3.45.04.png關于空指針安全的原理,,可以參考這篇文章研究學習Kotlin的一些方法,。

支持方法擴展

很多時候,F(xiàn)ramework 提供給我們的 API 往往都時比較原子的,,調(diào)用時需要我們進行組合處理,,因為就會產(chǎn)生了一些 Util 類,一個簡單的例子,,我們想要更快捷的展示 Toast 信息,,在 Java 中我們可以這樣做,。

屏幕快照 2017-05-18 下午3.46.14.png但是 Kotlin 的實現(xiàn)卻讓人驚奇,我們只需要重寫擴展方法就可以了,,比如這個 longToast 方法擴展到所有的 Context 對象中,,如果不去追根溯源,可能無法區(qū)分是 Framework 提供的還是自行擴展的,。

屏幕快照 2017-05-18 下午3.46.40.png注意:Kotlin 的方法擴展并不是真正修改了對應的類文件,而是在編譯器和 IDE 方面做得處理,。使我們看起來像是擴展了方法,。

Lambda, 高階函數(shù),Streams API, 函數(shù)式編程支持

所謂的 Lambda 表達式是匿名函數(shù),,這使得我們的代碼會更加的簡單,。比如下面的代碼就是 lambda 的應用。

屏幕快照 2017-05-18 下午3.47.49.png所謂的高階函數(shù)就是:

  • 可以接受函數(shù)作為參數(shù)
  • 也可以返回函數(shù)作為結果

舉一個接受函數(shù)作為參數(shù)的例子,。在 Android 開發(fā)中,,我們經(jīng)常使用 SharedPreference 來存儲數(shù)據(jù),如果忘記調(diào)用 apply 或者 commit 則數(shù)據(jù)修改不能應用,。利用 Kotlin 中的高階函數(shù)的功能,,我們能更好的解決這個問題:

屏幕快照 2017-05-18 下午3.49.00.png

當然這上面的例子中我們也同時使用了方法擴展這個特性。

Kotlin 支持了 Streams API 和方法引用,,這樣函數(shù)式編程更加方便,。比如下面的代碼就是我們結合 Jsoup,來抓取某個 proxy 網(wǎng)站的數(shù)據(jù),,代碼更加簡單,,實現(xiàn)起來也快速。

屏幕快照 2017-05-18 下午3.49.30.png

字符串模板

無論是 Java 還是 Android 開發(fā),,我們都會用到字符串拼接,,比如進行日志輸出等等。在 Kotlin 中,,字符串模板是支持的,,我們可以很輕松的完成一個字符串數(shù)組的組成:

屏幕快照 2017-05-18 下午3.51.08.png注意:關于字符串拼接可以參考這篇文章Java細節(jié):字符串的拼接

與 Java 交互性好

Kotlin 和 Java 都屬于基于 JVM 的編程語言,。Kotlin 和 Java 的交互性很好,,可以說是無縫連接。這表現(xiàn)在:

  • Kotlin 可以自由的引用 Java 的代碼,,反之亦然,。
  • Kotlin 可以現(xiàn)有的全部的 Java 框架和庫
  • Java 文件可以很輕松的借助 IntelliJ 的插件轉成 kotlin

Kotlin 應用廣泛

Kotlin 對 Android 應用開發(fā)支持廣泛,諸多工具,,比如 kotterknife(ButterKnife Kotlin 版),,RxKotlin,Anko 等等,,當然還有已經(jīng)存在的很多 Java 的庫都是可以使用的。

除此之外,,Kotlin 也可以編譯成 Javascript,。最近使用 Kotlin 寫了一段抓取 proxy 的代碼,實現(xiàn)起來非??旖?。甚至比純 JavaScript 實現(xiàn)起來要快很多。

屏幕快照 2017-05-18 下午3.52.17.png

關于性能

Kotlin 的執(zhí)行效率和 Java 代碼的執(zhí)行效率理論上一致的,。有時候 Kotlin 可能會顯得高一些,,比如 Kotlin 提供了方法的 inline 設置,可以設置某些高頻方法進行 inline 操作,,減少了運行時的進棧出棧和保存狀態(tài)的開銷,。

讀到這里,是不是想要嘗試一下 Kotlin 呢,,它簡潔的語法,,匯集諸多特性,高效率實現(xiàn)等等,,已經(jīng)在國外風生水起,,國外的 Pintereset, Square, Flipboard 等公司已經(jīng)開始應用到生產(chǎn)中。

關于轉向 Kotlin

其實,,我在做決定之前(當時 Kotlin 還沒有被欽定)也曾有過考慮,,是不是選擇了 Kotlin 就意味著放棄 Java 呢,冷靜下來想一想,,其實并不是那么回事,,因為 Kotlin 與 Java 語法太相近,以及在 Kotlin 中無時無刻不在和 Java 相關的東西打交道,,所以這點顧慮不是問題的,。

對于個人的項目來轉向 Kotlin,通常不是很難的選擇,,畢竟 Kotlin 是那么優(yōu)秀的語言,,相信很多人還是愿意嘗試并使用這個事半功倍的語言的。

而比較難抉擇的情況是如果如何讓團隊轉用 Kotlin,,個人認為團隊難以轉用的原因有很多,,比如學習成本,歷史包袱等等,。但其實根本原因還是思維方式的問題,,歪果仁喜歡用工具來提升開發(fā)效率,因為人力成本很高,。而國內(nèi)團隊提高效率的辦法通常是增加成員,。好在 Flipboard 美國團隊自 2015 年(可能更早)就引入了 Kotlin,,因此中國團隊這邊選用 Kotlin 也更加順水推舟。當然更主要的是目前團隊規(guī)模不大,,成員一致認可 Kotlin 的優(yōu)點,。

關于團隊轉用 Kotlin 的方法,一般比較行得通的辦法是自上而下的推行,。這就意味著要么直接的技術負責人比較開明要么就是需要有人來不斷推介來影響團隊,。

做個比較現(xiàn)實的比擬,Java 就像是一趟從我的家鄉(xiāng)保定開往北京西的耗時將近 2 個小時甚至更長的普通列車,,而 Kotlin 則是那趟僅需 40 分鐘就能到達的高鐵,。通常的人都會選擇高鐵,因為它節(jié)省了時間和提高了體驗,。這個時間和體驗對應編程中的,,我想應該是高效率和高可讀性,,可維護性的代碼。

現(xiàn)在好了,,有了 Google 的支持,Kotlin 轉 Android 相信在不久的將來就會全面展開,。篡改 Python 的一句名言「人生苦短,,我用 Kotlin」,,這樣一個高效實用的語言應該會被越來越多的團隊所接受,并應用到開發(fā)生產(chǎn)中,。當然也希望在國內(nèi)環(huán)境下大放異彩,。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多