如何評價Kotlin1 3正式版發布?

時間 2021-05-12 00:28:26

1樓:龍小龍

我主要關注的是協程api,所以我只針對這部分來說說我的感覺。

Coroutine終於不用experimental了,煩人的警告沒了

可是我從0.2x.x的版本遷移到1.0.1的庫時發現api改了很多,很多的CoroutineBuilder從頂級方法變成了CoroutineScope的擴充套件方法了。

這就要求你在需要發起子協程的類必須實現CoroutineScope介面。好處就是從語言規範上要求你結構化地管理好你的coroutine的父子關係。之前的那種預設都在GlobalScope中執行會使得生命週期管理太不清晰了,入門的使用者(例如我)很容易會忽略從而導致洩漏。

TheadPoolDispatcher不再被推薦使用,而是被建議使用共享的執行緒池,以減少不必要的ContextSwitch,從而發揮Coroutine本該有的效能。從而倒逼著開發者拋棄舊有的執行緒同步機制,使用更適合coroutine的Mutex等同步機制。(之前我受限於舊有的多執行緒思想,鑽了不少牛角尖)

同時在公升級遷移coroutine庫版本的時候,終於徹底搞清楚了coroutine的context,dispatcher,scope和job的概念,也藉此解決了長期以來我糾結了很久的退出應用時,子協程如何優雅地結束的問題。

另外Channel的很多子型別都被改為為internal了,ArrayChannel等無法直接構造,由統一的頂級函式來根據你需要的capacity來選擇是要返回的具體實現。

還有就是之前的一些helper方法被deprecated,例如suspendCoroutineOrReturn。這個方法本來在通過反射呼叫suspend function的時候需要用到。但是在1.

3的kotlin reflect庫中,KFunction增加了乙個callSuspend方法,於是這些個helper方法都被廢棄了。感覺變得更加合理了,終於不用手動傳入最後的隱藏的continuation引數了。

總體來說這個版本的coroutine的api終於變得更加合理和有指導性。

PS:但是我依然覺得coroutine部分的reference實在還有很大的改進空間,很多概念都比較碎片化,工程上的best practice目前依舊缺乏乙個明確的指引。

如何評價 Android Studio 正式版發布?

孟國濤 android studio的程式設計體驗很棒,雖然和eclipse差別不算大,但是細節上做的不錯。問題是目前大部分的開發者還在用eclipse,可能交流上有點困難。但是因為android studio的各種優點,日後肯定會成為主流的 從出來就一起在用從0.1到現在1.0 1年多了.而 An...

如何評價MacOS Big Sur正式版?值得更新嗎?

探尋可能 第三次給Metal Performance Shaders Graph打廣告了,之前Xcode12出來後第一時間嘗試了demo 如何評價改版設計的 Xcode 12?但是當時系統沒有更新所以catalyst不支援,現在更新後的第一時間也來玩一下demo,catalyst很順利的跑通,這也就...

如何評價《絕地求生》正式版?

羊小乙 介面 正式版與之前相比視野範圍略微縮小了一點點,作為乙個fps玩家,將擊殺提示移到左上確實舒服了不少。整體畫面的色彩比之前少為偏暗。槍械 突擊步槍整體是大幅度削弱了遠距離輸出能力,不僅僅有傷害衰減,子彈下墜也大了許多。衝鋒槍傷害與之前相比略有提高,打四肢的傷害係數調高了。精確射手步槍即連狙,...