今天我得鼓吹一波 Kotlin

Kotlin 被做爲 Google 官方語言也有一年多了,但除了剛宣佈那個月極度火爆之外,後面生活又迴歸了平靜。很多小夥伴緊跟 Google 爸爸的步伐,也對 Kotlin 有了或多或少的瞭解,GitHub 上也有了至關一部分的 Kotlin 開源項目。java

但或許是後知後覺,依然仍是有至關一部分小夥伴,和南塵同樣,只是在 Kotlin 很火的那段時間,簡單瞭解了一下,就像當初的微信小程序同樣。而後生活仍是迴歸平靜,依然對它停留在知道的程度。git

先推薦一下最近在 GitHub 上更新的項目

但通過一週多的詳細學習,我已經把本身 GitHub 上的開源項目 AiYaGirl 進行了深度改寫,徹底使用 Kotlin 語言新開闢了一個分支。github

AiYaGirl 地址:https://github.com/nanchen2251/AiYaGirl面試

可能有很多小夥伴還不知道 AiYaGirl ,這是南塵去年在 GitHub 上開源的一款 APP,功能比較簡單,主要採用 Retrofit && RxJava && MVP 模式,數據來源於代碼家的 Gank.io,目前在 GitHub 上有着將近 1k 的 Stars。編程

GitHub 上一直都有挺多各具特點的完整架構 APP,它們各有各的優點,我很是地感動,你看到了這兒,這就是個人幸運。小程序

如今我新增了一個 kotlin 分支,已經徹底採用 Kotlin 改寫完畢,但願你能喜歡。微信小程序

若是你對 RxJava 不是很熟悉,我強烈推薦你能看看個人 RxJava2Examples 開源庫,咱們用代碼 && Blog 對 RxJava2 的方式向你展現 RxJava 2 的各類操做符和一些使用細節,但願不會讓你失望。目前超過 50 萬的閱讀說明了 RxJava 確實被人關注,若是你還不 RxJava2,我勸你去翻一翻文檔,寫一寫 Demo。微信

RxJava2Examples 地址:https://github.com/nanchen2251/RxJava2Examples架構

GitHub 和公衆號我都會保持維護,期待你與我進行比心的交流。ide

由於我也曾遇到各類棘手的問題,處處詢問不到答案。

那時候的我,也許正如如今的你。

而我,也還在這條道路上默默前行~

好像有點偏題,但只要仍是想給你們推薦 AiYaGirl,由於我相信既有 Java 實現又有 Kotlin 實現的對比,會讓你的 Kotlin 學習事半功倍。

爲何要鼓吹 Kotlin

仍是得回到正題,以前可能由於各類各樣的緣由,我一直沒把 Kotlin 的學習提上日程,卻是奮鬥在 Python 的路上。但自從面試被多次問到 Kotlin 後,我不得不跟上社會的步伐,開始 Kotlin 的學習,畢竟我是一名 Android 開發呀!

幾天下來,對 Kotlin 不敢說很是瞭解,但確實被它的簡潔性和易用性吸引到爆,不管是它極佳的函數式編程支持,仍是它無比高效地編程方式,讓我時刻爲之興奮。

簡單用一點代碼給你展示它的靈活性吧。

好比咱們 Java 中這樣一串代碼:

int score = // some score; String grade; switch (score) { case 10: case 9: grade = "Excellent"; break; case 8: case 7: case 6: grade = "Good"; break; case 5: case 4: grade = "OK"; break; case 3: case 2: case 1: grade = "Fail"; break; default: grade = "Fail"; } 

當你用 Kotlin 實現後,你會發現,怎麼能夠這麼簡單?

var score = // some score var grade = when (score) { 9, 10 -> "Excellent" in 6..8 -> "Good" 4, 5 -> "OK" in 1..3 -> "Fail" else -> "Fail" } 

額,還有對數據類的支持,讓人爲之抓狂。

public class Developer { private String name; private int age; public Developer(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Developer developer = (Developer) o; if (age != developer.age) return false; return name != null ? name.equals(developer.name) : developer.name == null; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + age; return result; } @Override public String toString() { return "Developer{" + "name='" + name + '\'' + ", age=" + age + '}'; } } 

Kotlin 會怎樣?

data class Developer(val name: String, val age: Int) 

對,你沒有看錯,就一行代碼。

只貼代碼歷來都是一件不負責任的事,因此我就舉這麼兩個例子,若是你喜歡的話,趕忙加入咱們 Kotlin 的大軍吧~

Kotlin 是否會取代 Java

很多小夥伴在後臺問我這個問題,oh...

這個真的很難說,這個世界上並非說一件事物好,就必然會獲得普遍應用的。一件事物的出現,會有一羣人去推廣,但也會有人會去阻止,只能看誰作的更到位吧~

額外的話

好啦,自從 Kotlin 出來後,事情的發展就變得極其不可控,很多推介者就蹭了好大一波流量,而南塵這麼晚再出來鼓吹,應該不會被打吧?

相關文章
相關標籤/搜索