[譯] 將 Kotlin 應用於現有 Java 程式碼的策略

LoLo發表於2018-12-25

將 Kotlin 應用於現有 Java 程式碼的策略


將 Kotlin 應用於現有 Java 程式碼的策略

自 Google 在 I/O 大會上釋出最新訊息(譯者注:Google 宣佈 Android Studio 將預設支援 Kotlin)起,事情變得瘋狂起來。在過去的兩週內,Kotlin 週報郵件列表的訂閱人數增長了 20% 以上,文章提交數增長超過 200%。我所組織的線下交流(Kotlin 慕尼黑使用者組)的參與人數大幅增長。所有這一切伴隨著開發者社群總體的爆發性增長。

一個還會不斷增長的趨勢。

總之現在來看,未來將會如何發展是很顯然的。儘管 Google 承諾將繼續支援 Java,但 Google 和 Oracle 之間的法律糾紛以及 Kotlin 是一個更加簡潔、高效、強大的語言的清晰事實正在標誌著你學習的方向。我發現下面這個推文相當有預見性。

幾個月前,當我出現在與 Kotlin 相關的討論、社群中時,可能最常被問及的問題是,現在是否是一個遷移至 Kotlin 的好時機。我的回答始終不會變:是的。進行 Kotlin 遷移有很多收益,且幾乎沒有任何壞處。我所能想到的唯一一個技術上的副作用是方法數將會增多,因為 Kotlin 標準庫(目前)增加了 7191 個新方法。綜合利弊來看,這是一個完全可以接受的不足。

既然這個問題的答案是毫無爭議的肯定,我意識到另一個問題在浮現出來:開始使用 Kotlin 應該採取什麼樣的步驟?

本文旨在向那些困惑從何開始或尋求靈感的人們提供一些自己的想法。

1.- 從測試開始

是的,我知道測試是有限制性的。單元測試確切是指:你所測試的(是)獨立單元和模組。當你所擁有的一切只是一群單獨的類和可能的少量輔助類時,開發複雜的架構網是很困難的。但是這是一種對新語言建立認知和擴充的非常廉價和高效的方法。

我所聽到的一個最常見的反對 Kotlin 的觀點是,要避免在生產環境中部署 Kotlin 程式碼。雖然在我看來這是一種非常有偏見的觀點,我想向你強調的是,如果你從測試開始,沒有任何程式碼會被實際部署(到生產環境)。取而代之的是,這些程式碼可能會在你的持續整合環境中被使用,而這也是一種擴充知識的方式。

開始用 Kotlin 書寫新的測試吧,它們可以直接與其他 Java 類進行協同和互通。當你有空閒時間時,可以將 Java 類遷移,並檢查生成的程式碼,根據需要進行手動更改。以我個人經驗來看,60% 的轉換程式碼都是可以直接使用的,對於沒有複雜功能的簡單類而言這個比例會更高。我發現這是一個非常安全的場景,可以作為第一步來開始。

2.- 遷移已有程式碼

你已經開始編寫了一些 Kotlin 程式碼。你瞭解了一些關於語言的基礎。現在你已經準備好將 Kotlin 用於生產環境了!

當你要第一次開始在生產環境中使用時,從低耦合的類(DTO 和資料類)開始是非常高效的。這些類的影響很小,可以在非常短的時間內輕鬆的重構。這是瞭解資料類並大幅減少你的程式碼量的最佳時機。

這是你希望發起的 PR。

在這之後,開始遷移單一類。可能是類似 LanguageHelperUtils 這樣的類。雖然它們在很多地方被呼叫,但這種類一般只提供一些影響和依賴關係很有限的功能。

在某個時間節點,你會感覺解決架構中那些更加龐大和核心的類已經足夠舒適了。不要害怕。請特別注意可為空(nullability),這是 Kotlin 中最為重要的特性之一。如果你已經進行了很多年的 Java 程式設計的話,它需要你用一種新的思維方式。但請相信我,新的程式設計正規化最終會在你的頭腦中形成。

記住:你不需要強制遷移整個程式碼庫。Kotlin 和 Java 可以無縫互動,現在你並不需要讓程式碼庫 100% 由 Kotlin 組成。當你感覺到足夠舒適的時候再去做它。

3.- 盡情的使用 Kotlin

到這個階段你一定可以開始用 Kotlin 編寫所有的新程式碼了。把這當成過去的事,不要總是回看。當你開始用純 Kotlin 編寫第一個功能時,除了在上面提到過的可為空(nullability),你還需要對預設引數多加註意。更多的考慮擴充套件功能,而不是繼承。發起拉取請求(Pull Request)和程式碼審查,和你的同事討論如何能夠進一步完善。

最後的建議,享受吧!

用於學習 Kotlin 的資源

下面所列的是我曾經嘗試過並且可以推薦的學習 Kotlin 的資源連結。我特別喜歡書籍,儘管有些人討厭它們。我發現把它們大聲讀出來是很重要的,同時在電腦上進行編寫和練習的話對於知識的沉澱更有幫助。

  1. Kotlin Slack: 許多 JetBrains 的人和 Kotlin 狂熱者會聚集在這裡。
  2. Kotlin Weekly: 我管理的一個每週選取 Kotlin 相關資訊釋出的郵件列表。
  3. Kotlin Koans: 一系列可以訓練和強化你的 Kotlin 技能的線上練習。
  4. Kotlin in Action: 來自 JetBrains 的一些 Kotlin 工作者的書。
  5. Kotlin for Android developers: 一本重點在如何使用 Kotlin 做 Android 開發的書。
  6. Resources to Learn Kotlin: Google 提供的更多學習 Kotlin 的資源。

我在我的 Twitter 賬戶上分享關於軟體工程和生活的一些觀點。如果你喜歡這篇文章或它真的對你有所幫助,非常樂意你能夠分享、點贊或回覆。這是業餘作者的最大動力。


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOSReact前端後端產品設計 等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃

相關文章