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