使用 Kotlin 提升生產力

Kotlin 以其簡潔的特性而聞名,而在咱們的實踐中,更加簡潔就意味着更加高效。事實上,在使用 Kotlin 的專業 Android 開發者中,有多達 67% 的人表示 Kotlin 已經幫助他們提高了生產力。在接下來的內容中,我會分享一些 Kotlin 幫助咱們的合做夥伴工程師們提升生產力的方式,併爲您介紹有助於此的 Kotlin 功能。html

在使用 Kotlin 的專業 Android 開發者中,有多達 67% 的人表示 Kotlin 已經幫助他們提高了生產力android

簡潔、簡單且高效

Kotlin 的簡潔性對開發的各個階段都有影響:express

  • 做爲代碼做者: 您能夠專一於須要解決的問題 (而不是語法)。更少的代碼意味着更少地測試、更少地調試以及更少寫出 Bug 的機會。
  • 做爲審閱和維護者: 您須要閱讀的代碼變少了,從而更容易理解代碼的做用,也所以更容易審閱和維護代碼。

如下例子來自 Flipkart 的團隊:編程

"在一次內部調查中,50% 的開發人員提到,對於使用 Kotlin 編寫的模塊,預估完成功能所需的時間會有所減小。"設計模式

——Flipkart安全

Kotlin 的功能與生產力

因爲 Kotlin 的簡潔與高可讀性,大多數 Kotlin 的功能均可以提升生產力。下面讓咱們來看一些最經常使用的功能。app

默認參數與構建器

在 Java 編程語言中,當您的構造函數中的某些參數是可選參數時,您一般會採用下面兩種方法之一:編程語言

在使用 Kotlin 時,因爲默認參數功能的存在,您無需使用這兩種方法。默認參數使您無需額外的樣板代碼便能實現函數重載。函數

對 Kotlin 的使用使得 Cash App 團隊能夠清除諸多構建器,從而減小了他們須要編寫的代碼量。在某些狀況下,代碼量被減小了 25% 之多。學習

舉個例子,下面的代碼是一個 Task 對象分別使用構建器及默認參數的實現方式。該 Task 惟一的必需參數是任務名 (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
+)

您能夠經過咱們的這篇 Kotlin Vocabulary | Kotlin 默認參數 瞭解有關默認參數的更多信息。

object 關鍵字與單例

單例模式 大概是軟件開發者最經常使用的設計模式之一,它能夠幫助咱們建立一個對象的單個實例,而其餘對象能夠訪問和共享該實例。

建立單例時,您須要控制對象是如何被建立的,保證只存在一個實例並確保代碼的線程安全。而在 Kotlin 中,您只需使用一個關鍵字: 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 語言簡潔與簡單的特性,一樣體如今 操做符重載解構 與字符串模板等功能中。這些功能使得代碼變得十分易讀。

舉個例子,假設咱們有一個圖書館和一些書。那麼從圖書館移除書籍並處理和打印書籍標題的操做,即可編寫爲下面這樣:

/* Copyright 2020 Google LLC.  
   SPDX-License-Identifier: Apache-2.0 */

fun borrow(){
    library -= book
    val (title, author) = book
    println("Borrowed $title")
}

這裏用到的 Kotlin 功能有:

  • -= 的實現使用了 操做符重載
  • val (title, author) = book 使用了 解構
  • println ("Borrowed $title") 使用了字符串模板。

總結

Kotlin 使得閱讀和編寫代碼變得簡單,它內建了諸如 單例委託 這類模式的實現,從而能夠幫助咱們移除那些可能致使 bug 或增長維護成本的代碼。而像 字符串模板lambda 表達式擴展函數操做符重載 這類功能則能夠使代碼更加簡潔明瞭。代碼編寫得更少意味着代碼的閱讀量變小,同時也意味着須要維護的代碼更少、錯誤也更少,從而帶來更高的生產力。

您能夠閱讀 使用 Kotlin 建立更好的 App 來了解更多,也能夠經過閱讀學習用例來了解開發者們是如何從 Kotlin 中獲益的。若是您要邁出使用 Kotlin (世界上最受歡迎的語言之一) 的第一步,請查閱咱們的 使用入門 頁面。

相關文章
相關標籤/搜索