今天我得鼓吹一波 Kotlin

Kotlin 被作為 Google 官方語言也有一年多了,但除了剛宣布那個月極度火爆以外,后面生活又回歸了平靜。不少小伙伴緊跟 Google 爸爸的步伐,也對 Kotlin 有了或多或少的了解,GitHub 上也有了相當(dāng)一部分的 Kotlin 開源項(xiàng)目。

但或許是后知后覺,依然還是有相當(dāng)一部分小伙伴,和南塵一樣,只是在 Kotlin 很火的那段時間,簡單了解了一下,就像當(dāng)初的微信小程序一樣。然后生活還是回歸平靜,依然對它停留在知道的程度。

先推薦一下最近在 GitHub 上更新的項(xiàng)目

但經(jīng)過一周多的詳細(xì)學(xué)習(xí),我已經(jīng)把自己 GitHub 上的開源項(xiàng)目 AiYaGirl 進(jìn)行了深度改寫,完全使用 Kotlin 語言新開辟了一個分支。

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

可能有不少小伙伴還不知道 AiYaGirl ,這是南塵去年在 GitHub 上開源的一款 APP,功能比較簡單,主要采用 Retrofit && RxJava && MVP 模式,數(shù)據(jù)來源于代碼家的 Gank.io,目前在 GitHub 上有著將近 1k 的 Stars。

GitHub 上一直都有挺多各具特色的完整架構(gòu) APP,它們各有各的優(yōu)勢,我非常地感動,你看到了這兒,這就是我的幸運(yùn)。

現(xiàn)在我新增了一個 kotlin 分支,已經(jīng)完全采用 Kotlin 改寫完畢,希望你能喜歡。

如果你對 RxJava 不是很熟悉,我強(qiáng)烈推薦你能看看我的 RxJava2Examples 開源庫,我們用代碼 && Blog 對 RxJava2 的方式向你展示 RxJava 2 的各種操作符和一些使用細(xì)節(jié),希望不會讓你失望。目前超過 50 萬的閱讀說明了 RxJava 確實(shí)被人關(guān)注,如果你還不 RxJava2,我勸你去翻一翻文檔,寫一寫 Demo。

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

GitHub 和公眾號我都會保持維護(hù),期待你與我進(jìn)行比心的交流。

因?yàn)槲乙苍龅礁鞣N棘手的問題,到處詢問不到答案。

那時候的我,也許正如現(xiàn)在的你。

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

好像有點(diǎn)偏題,但只要還是想給大家推薦 AiYaGirl,因?yàn)槲蚁嘈偶扔?Java 實(shí)現(xiàn)又有 Kotlin 實(shí)現(xiàn)的對比,會讓你的 Kotlin 學(xué)習(xí)事半功倍。

為什么要鼓吹 Kotlin

還是得回到正題,之前可能因?yàn)楦鞣N各樣的原因,我一直沒把 Kotlin 的學(xué)習(xí)提上日程,倒是奮斗在 Python 的路上。但自從面試被屢次問到 Kotlin 后,我不得不跟上社會的步伐,開始 Kotlin 的學(xué)習(xí),畢竟我是一名 Android 開發(fā)呀!

幾天下來,對 Kotlin 不敢說非常了解,但確實(shí)被它的簡潔性和易用性吸引到爆,無論是它極佳的函數(shù)式編程支持,還是它無比高效地編程方式,讓我時刻為之興奮。

簡單用一點(diǎn)代碼給你展現(xiàn)它的靈活性吧。

比如我們 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";
}

當(dāng)你用 Kotlin 實(shí)現(xiàn)后,你會發(fā)現(xiàn),怎么可以這么簡單?

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

額,還有對數(shù)據(jù)類的支持,讓人為之抓狂。

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)

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

只貼代碼從來都是一件不負(fù)責(zé)任的事,所以我就舉這么兩個例子,如果你喜歡的話,趕緊加入我們 Kotlin 的大軍吧~

Kotlin 是否會取代 Java

不少小伙伴在后臺問我這個問題,oh...

這個真的很難說,這個世界上并不是說一件事物好,就必然會得到廣泛應(yīng)用的。一件事物的出現(xiàn),會有一群人去推廣,但也會有人會去阻止,只能看誰做的更到位吧~

額外的話

好啦,自從 Kotlin 出來后,事情的發(fā)展就變得極其不可控,不少推介者就蹭了好大一波流量,而南塵這么晚再出來鼓吹,應(yīng)該不會被打吧?

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

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,048評論 25 709
  • 人生的意義是什么,真的不知道,也不知道為什么會突然想到這個問題,可能是人生到目前為止都沒做過一件有意義的事情...
    007阿酷閱讀 369評論 0 0
  • 我不安的拿起手機(jī) 反復(fù)確認(rèn)是否有你的信息? 糾結(jié)要不要主動聯(lián)系? 我問自己是因?yàn)樗寄钅?還是心里那場寂寞的雨? 如...
    驀然青雨閱讀 221評論 1 2
  • 卡西魔多與克洛德共同行走在街道上,一前一后。路上一些咒罵、嘲諷的語句不絕于耳,可二人毫不察覺、無動于衷,原...
    曹政陽閱讀 403評論 0 2
  • 以銅為鏡 可以正衣冠 以史為鏡 可以知興替 以人為鏡 可以明得失 寫了一整天個人對照檢查材料 照照鏡子 審視自己 ...
    芝加歌閱讀 256評論 0 1

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