5
Architecture for Multiplatform native development in Kotlin (blog.kotlin-academy.com)
IngramChen 積分 3 編輯於

a long story...

這個架構看完後,真是憂喜半參,憂的部份比較多。

首先,全部的專案感覺都要混在同個 repository ? 希望這只是範例的問題。

第二,能夠共用的有 common, common-client,但感覺沒有很多。common 還好,都是 data model ,設計一份後給所有人共用就行了。

common-client 就有點難了,它將原本寫在 Activity/ViewController 裡的程式抽出共用的部份,盡可能讓所有平台都共用程式碼邏輯。理論上是不錯的。

但經過我這幾年待團隊的經驗,abstraction (抽 interface) 這件事很多開發者都做不好。一是能力不足 (寫前端/mobile 的人大多太年輕),另一個是根本沒機會點這方面的技能,自然也進步不了。

common-client 很吃開發者抽象化的能力,我的預期是最後是一團比原來更看不懂的程式碼。

第三,裡面的 DateTime 範例嚇到我了,為了跨平台,連這種最基礎的元件都要再抽象化一層。拜託,處理時間的函式庫難寫的要死,抽象化做對更是難上加難。要應用程式開發者做這種事是不切實際的。

也許這只是個範例,不過 DateTime 在跨平台上現在 kotlin 還沒有解 (最近 1.2 版出了 kotlin 版的 Math,解決掉一小塊)。而且還有許多塊要解決,這也不知道哪天會完成。在尚未完成前,就很吃開發者的功力了。

data class Account (
   val uid:Kuuid,
   val createTime:KDateTime
)

上面是個隨便的帳號 data model ,如果 uid 設計成 UUID,很顯然的每個平台的實作都有點不大一樣,kotlin 又沒提供,所以你只好自己刻一個 Kuuid ,然後下面的 KDateTime 也是同樣的意思...

這跟我想要的不大一樣啊....