iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0

Java 常年詬病問題

  • 寫了一千行 code 發現一半是 gettersetter
  • 小心翼翼的寫完功能後,確發現不停的噴 NullPointerException (NPE)
  • 在 Java 寫個 Lambda function 困難重重

用 Java 開發時最害怕碰到的問題是 NullPointerException (NPE) ,這種異常往往伴隨著非預期運行,這也是 CS 中很著名的「 The Billion Dollar Mistake」。 雖然 Java 對 NPE 這塊也做出了很多的方法去做確保,例如裝飾詞等等,但對於新手而言,還是非常不友善的。

從 Java 跳 Kotlin 會碰到的問題有哪些

從 Java 跳到 Kotlin 時,會很容易寫出 Java 風格的 Kotlin code ,針對兩者的差別,在 Kotlin 官網中列出了以下項目,這些都是在轉換時很容易碰到的坑

這邊舉一個我剛開始開發 Kotlin 時最常感到困擾的例子,因為在 Java 中可以不用先幫變數附值,但 Kotlin 規定在宣告變數時必須先附值才可以對他做操作,會這麼設計的原因是因為 Kotlin 要確保開發時減少 NPE 產生的機會,雖然剛開始會覺得有點麻煩,但習慣之後真的會減少很多 NPE 問題喔~

Java style:

String word;
word = "Hello java";
System.out.println(word); // Output "Hello java"

Kotlin style:

var word: String = "" // or val word: String = "Hello kotlin"
word = "Hello kotlin"
println("$word") // Output "Hello kotlin"

Kotlin 有哪些魅力吸引開發者

1. 語法簡潔

JetBrain 在打造 Kotlin 時創造了很多特点,比如減少 getter/setter 、類型推斷、省去结尾分號等等。

2. 導入 Null safty 降低 NPE 的發生

Kotlin 導入 Null safty 是開發者會跳槽到 Kotlin 很重要的原因之一, JetBrains 將編譯時才能檢查的 NPE ,透過在宣告變數時就必須指定可不可允許儲存 null 類型,變可以在開發時知道會不會引起 NPE,明顯的改善了除錯的時間。

3.導入Scope function 、 Extension function 和 Lambda 提升可讀性與拓展性

Kotlin 中存在 letalsorunapply 等豐富的 Scope function ,讓程式碼讀起來更加流暢,而 Kotlin 除了支持 Object-oriented programming 外,也同時支援 Functional programming ,因此,在 Extension Function 和 Lambda Function 上 JetBrains 也下了很大的功夫,將邊寫方法變得十分簡單,開發者多了許多開發上的選擇,同時也提升了程式碼的可讀性與擴展性。

依照我目前的經驗,我最常使用到的是 Null safty 搭配 Scope function 以及 High-order function ,程式碼執行上會更安全且除錯會更方便,另外 Extension function 操作上也非常方便,因此也能取代掉很多 Java 的 Util class。

Reference


上一篇
Day 01 | 前言: Kotlin 的誕生
下一篇
Day 03 | Kotlin 起手式: IDE 怎麼選?
系列文
30天,從0開始用Kotlin寫APP30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言