合打造《高級Kotlin強化實戰(zhàn)(附Demo)》)
Kotlin 以其簡潔的特性而聞名而在我們的實踐中更加簡潔就意味著更加高效。事實上在使用 Kotlin 的專業(yè) Android 開發(fā)者中有多達 67% 的人表示 Kotlin 已經(jīng)幫助他們提升了生產(chǎn)力。在接下來的內(nèi)容中我會分享一些 Kotlin 幫助我們的合作伙伴工程師們提高生產(chǎn)力的方式并為您介紹有助于此的 Kotlin 功能。在使用 Kotlin 的專業(yè) Android 開發(fā)者中有多達 67% 的人表示 Kotlin 已經(jīng)幫助他們提升了生產(chǎn)力簡潔、簡單且高效Kotlin 的簡潔性對開發(fā)的各個階段都有影響:作為代碼作者:您可以專注于需要解決的問題 (而不是語法)。更少的代碼意味著更少地測試、更少地調(diào)試以及更少寫出 Bug 的機會。作為審閱和維護者:您需要閱讀的代碼變少了從而更容易理解代碼的作用也因此更容易審閱和維護代碼。以下例子來自 Flipkart 的團隊:“在一次內(nèi)部調(diào)查中50% 的開發(fā)人員提到對于使用 Kotlin 編寫的模塊預(yù)估完成功能所需的時間會有所減少?!薄狥lipkartKotlin 的功能與生產(chǎn)力由于 Kotlin 的簡潔與高可讀性大多數(shù) Kotlin 的功能都可以提高生產(chǎn)力。下面讓我們來看一些最常用的功能。默認參數(shù)與構(gòu)建器在 Java 編程語言中當(dāng)您的構(gòu)造函數(shù)中的某些參數(shù)是可選參數(shù)時您通常會采用下面兩種方法之一:添加多個構(gòu)造函數(shù)實現(xiàn) 構(gòu)建器模式。在使用 Kotlin 時由于默認參數(shù)功能的存在您無需使用這兩種方法。默認參數(shù)使您無需額外的樣板代碼便能實現(xiàn)函數(shù)重載。對 Kotlin 的使用使得 Cash App 團隊可以清除諸多構(gòu)建器從而減少了他們需要編寫的代碼量。在某些情況下代碼量被減少了 25% 之多。舉個例子下面的代碼是一個Task對象分別使用構(gòu)建器及默認參數(shù)的實現(xiàn)方式。該 Task 唯一的必需參數(shù)是任務(wù)名 (name):/* Copyright 2020 Google LLC. SPDX-License-Identifier: Apache-2.0 */ 3 - public class Task { - private final String name; - private final Date deadline; - private final TaskPriority priority; - private final boolean completed; - - private Task(String name, Date deadline, TaskPriority priority, boolean completed) { - this.name name; - this.deadline deadline; - this.priority priority; - this.completed completed; - } - - public static class Builder { - private final String name; - private Date deadline; - private TaskPriority priority; - private boolean completed; - - public Builder(String name) { - this.name name; - } - - public Builder setDeadline(Date deadline) { - this.deadline deadline; - return this; - } - - public Builder setPriority(TaskPriority priority) { - this.priority priority; - return this; - } - - public Builder setCompleted(boolean completed) { - this.completed completed; - return this; - } - - public Task build() { - return new Task(name, deadline, priority, completed); - } - } -} data class Task( val name: String, val deadline: Date DEFAULT_DEADLINE, val priority: TaskPriority TaskPriority.LOW, val completed: Boolean false )object 關(guān)鍵字與單例單例模式大概是軟件開發(fā)者最常用的設(shè)計模式之一它可以幫助我們創(chuàng)建一個對象的單個實例而其他對象可以訪問和共享該實例。創(chuàng)建單例時您需要控制對象是如何被創(chuàng)建的保證只存在一個實例并確保代碼的線程安全。而在 Kotlin 中您只需使用一個關(guān)鍵字: object。/* Copyright 2020 Google LLC. SPDX-License-Identifier: Apache-2.0 */ - public class Singleton{ - private static volatile Singleton INSTANCE; - private Singleton(){} - public static Singleton getInstance(){ - if (INSTANCE null) { // Single Checked - synchronized (Singleton.class) { - if (INSTANCE null) { // Double checked - INSTANCE new Singleton(); - } - } - } - return INSTANCE; - } - private int count 0; - public int count(){ return count; } - } object Singleton { private var count 0 fun count(): Int { return count } }操作符、字符串模板及更多Kotlin 語言簡潔與簡單的特性同樣體現(xiàn)在 操作符重載、解構(gòu)與字符串模板等功能中。這些功能使得代碼變得十分易讀。舉個例子假設(shè)我們有一個圖書館和一些書。那么從圖書館移除書籍并處理和打印書籍標(biāo)題的操作便可編寫為下面這樣:/* Copyright 2020 Google LLC. SPDX-License-Identifier: Apache-2.0 */ fun borrow(){ library - book val (title, author) book println(Borrowed $title) }這里用到的 Kotlin 功能有:-的實現(xiàn)使用了 操作符重載val (title, author) book使用了 解構(gòu)println (Borrowed $title)使用了字符串模板??偨Y(jié)Kotlin 使得閱讀和編寫代碼變得簡單它內(nèi)建了諸如 單例和 委托這類模式的實現(xiàn)從而可以幫助我們移除那些可能導(dǎo)致 bug 或增加維護成本的代碼。而像字符串模板、lambda 表達式、擴展函數(shù)、操作符重載這類功能則可以使代碼更加簡潔明了。代碼編寫得更少意味著代碼的閱讀量變小同時也意味著需要維護的代碼更少、錯誤也更少從而帶來更高的生產(chǎn)力。那么我們該如何學(xué)習(xí)Kotlin呢如果你是因為缺少學(xué)習(xí)資料而我正好薅到這本谷歌內(nèi)部大佬根據(jù)實戰(zhàn)編寫的Kotlin寶典從入門到精通教程通俗易懂實例豐富既有基礎(chǔ)知識也有進階技能能夠幫助讀者快速入門是你學(xué)習(xí)Kotlin的葵花寶典快收藏起來今天分享的一共分為兩部分字節(jié)跳動內(nèi)部超高質(zhì)量Kotlin筆記、谷歌大佬編寫高級Kotlin強化實戰(zhàn)附Demo。一、字節(jié)跳動內(nèi)部超高質(zhì)量Kotlin筆記1.準備開始基本語法習(xí)慣用語編碼風(fēng)格2.基礎(chǔ)基本類型包控制流返回與跳轉(zhuǎn)3.類和對象類和繼承屬性和字段接口可見性修飾詞擴展數(shù)據(jù)對象泛型嵌套類枚舉類對象表達式和聲明代理模式代理屬性4.函數(shù)和lambda表達式函數(shù)高階函數(shù)與 lambda 表達式內(nèi)聯(lián)函數(shù)5.其它多重申明Ranges類型檢查和自動轉(zhuǎn)換This表達式等式運算符重載空安全異常注解反射動態(tài)類型6.互用性動態(tài)類型7.工具使用Maven使用 Ant使用 Gradle使用Griffon8.FAQ與java對比與Scala對比需要的朋友只需要你點贊支持然后點擊這里免費獲取?;A(chǔ)知識掌握之后就是靠實戰(zhàn)提升了二、谷歌大佬編寫高級Kotlin強化實戰(zhàn)附Demo照樣目錄乘上第一章 Kotlin入門教程Kotlin 概述Kotlin 與 Java 比較巧用 Android Studio認識 Kotlin 基本類型走進 Kotlin 的數(shù)組走進 Kotlin 的集合集合問題完整代碼基礎(chǔ)語法第二章 Kotlin 實戰(zhàn)避坑指南方法入?yún)⑹浅A坎豢尚薷牟灰?Companion 、INSTANCE Java 重載在 Kotlin 中怎么巧妙過渡一下Kotlin 中的判空姿勢Kotlin 復(fù)寫 Java 父類中的方法Kotlin “狠”起來連TODO 都不放過is、as 中的坑Kotlin 中的 Property 的理解also 關(guān)鍵字takeIf 關(guān)鍵字takeIf 關(guān)鍵字單例模式的寫法第三章 項目實戰(zhàn)《Kotlin Jetpack 實戰(zhàn)》從一個膜拜大神的 Demo 開始Kotlin 寫 Gradle 腳本是一種什么體驗Kotlin 編程的三重境界Kotlin 高階函數(shù)Kotlin 泛型Kotlin 擴展Kotlin 委托協(xié)程“不為人知”的調(diào)試技巧圖解協(xié)程suspend