ksc91u 積分 1

這邊有一個比較, evernote 的 android-job 是支援 api 14 以上, 而且不需要 google play service 的 Link1

然後只是, 在某些奇怪的中國手機上, job schedule 之後不會執行, 但是 schedule 第二個 job 就會連同第一個一起執行。

解法是, 多schedule 一個什麼都不做的 job...

colorhaake 積分 0

這個太難了,要先把理論補起來 才會知道裡面的奧妙

colorhaake 積分 0

覺得他的畫layout的方式還滿醜的, 不像jsx, 或者xml那樣乾淨 很多冗餘的地方

IngramChen 積分 1

最近開始玩 flutter 了,widget tree 的 state 控制真的很不一樣,腦袋要翻一翻才能重新適應

natsu 積分 0

如果用 model object 來傳遞 presentation 層、domain 層、data 層之間的資料才會變得簡單一點吧?不過這樣一來又會破壞 OO 的封裝特性 ...

IngramChen 積分 1

總之歷史會再重演一次,當 Java 走到 J2EE 那個複雜到哭的時候,就會有人出 Spring 幫大家砍掉重練,而 Java stack 繁鎖到不行就有人出 Rails 改變風氣。

koji 積分 0

之前看 iOS 則有 VIPER...也是頗驚人的複雜

IngramChen 積分 2 編輯於

Activity, Presenter 和 UseCase 太多層很煩啊。

本來 Activity 本身就應該是 presenter 的角色了 (可以測試),但 Android 搞得太麻煩,只好再抽一層。

寫到後來一個功能從 layout -> activity -> presenter -> use case -> model -> DAO 整整要六層以上才寫得完,暈。

這不是 over engineering 什麼才是? 但 Android 已深陷泥沼…

Kros 積分 0

原來 jake 大大在做這個,真的蠻方便的啦

qrtt1 積分 0

偶現在都是上班寫 java,下班寫 kotlin 的型態惹。

Kros 積分 0

用了 kotlin 之後, 我一率都開 data class XD

koji 積分 0

使用 RxJava chaining 時還是蠻有機會用到 Pair,但頂多就 Pair 就是了。實在不想為了 flatMap 串資料時為了帶上層的變數再開一個 @lombok.Value class...

smallufo 積分 0

原來如此,沒想過這麼深。看來 JetBrains 也深思熟慮過此語法。。。

IngramChen 積分 3 編輯於

但我認為 Kotlin 缺少類似 swift 的 guard 機制,如果對於多個 nullable 物件,要確認他們均不為 null 再做某件事,程式難免會寫出許多 if null check,會讓 code 繁瑣,詳情可以參考此討論 Kotlin null check for multiple nullable vars。

這點我也不同意,swift 的 guard 實在是有點煩,跟 Java CheckedException 一樣繁鎖,寫起來很囉嗦。

問題是出在有一堆 nullable 的 type 才會有 multiple guard 這種需求,在 Swift 因為常常和 objective c 和 UIKit 對接,所以會有一堆 nullable type ,這是技術債,很難避免。

Kotlin 這裡,我沒有很多需要 multi guard 的地方,印象中最多兩個吧?因為習慣上我會偏好很早之前就把 argument 轉成 nonnull type (比方說從 restful API 過來,通常會有一堆 null,在這一層就通通擋掉了 (reject/validate/convert/default value),能進入 service 層的 nullable 並不多。

或者比方說,你有一個 boolean flag, var enable:Boolean? 。你的需求除了直覺的 enabled/disabled 兩種狀態外,還有另外一個 未設定 的狀態。然後大多數的人取捷徑就直接讓 flag 變 nullable Boolean? 達到三元狀態的需求。

我個人偏好就直接改 enum 了,省得一堆 nullable type。Kotlin 很多定義都是 one liner ,就儘量用吧

最後,如果一個物件上有一堆 nullable type field,這是一種 design smell,臭臭的,應該拆開重構才是 (Database 的 table 有一堆欄位是 null 也代表正規化做的不好)

IngramChen 積分 1 編輯於

關於 pair/triple... 我覺得 triple 已經很夠了啊?

而且如果寫到 triple 以上我就會開始看要怎麼改了,另外 Triple 我也不會 return 出去給別人用,都是中間產物而已。有三個欄位要送出去我就會換 data class ,比較好懂。

guava 那邊1 有一些討論為什麼連 Pair 都不好

smallufo 積分 0

lisp、haskell 大神從上俯視,看我在下面打轉,內心一定嗤嗤地笑...

IngramChen 積分 1

smallufo 也夠扯了, 每次出新的就全部重寫一次...

IngramChen 積分 0

還沒轉的不用再等啦

2018 是 kotlin desktop of year (咦

IngramChen 積分 0

理論上是假消息, 但 apple 如果不澄清的話, 表示其實 apple 未來有想...