Swift 開發者正在討論 Pledge 這一新的響應式程式設計框架的優勢,許多人質疑它相比蘋果的 Combine 和 SwiftUI 內建狀態管理等成熟解決方案的優勢。這個旨在簡化 Swift 應用程式中狀態管理和事件傳播的框架,引發了關於蘋果生態系統中響應式程式設計不斷發展的討論。
社群反應褒貶不一
開發者社群對 Pledge 與現有解決方案相比的價值主張表示懷疑。雖然 Pledge 提供了執行緒安全實現、基於優先順序的通知和速率限制等功能,但一些開發者質疑,當已經存在強大的替代方案時,這些功能是否足以證明採用新框架的必要性。
「這看起來像是 RxSwift/Combine 的主體部分,但沒有任何有用的部分。例如,網路示例需要一個顯式屬性,而我在類似情況下會使用的程式碼是直接返回一個 Observable。」
這種觀點反映了一個更廣泛的擔憂,即 Pledge 可能是在重新發明輪子,而沒有比已建立的框架增加實質性的好處。一些開發者指出,蘋果本身似乎正在透過其較新的基於宏的 Observable 框架遠離傳統的函式式響應式程式設計(FRP)模式,這表明更簡單的方法可能正在受到青睞。
平臺相容性可能是一個差異化因素
討論中強調的一個潛在優勢是 Pledge 與無法使用蘋果 Combine 框架的環境的相容性。一位評論者指出,Pledge 對於 Swift on Linux 可能很有價值,因為 Combine 在那裡沒有官方支援。然而,其他人很快指出了已經解決這一差距的現有替代方案,如 OpenCombine 和 CombineX。
該框架的建立者澄清說,Pledge 主要針對 UIKit 開發,其中響應式狀態管理不是內建的,這與 SwiftUI 的整合方法不同。這一定位表明,Pledge 旨在為使用較舊 UI 框架或因各種原因無法過渡到 SwiftUI 的開發者提供服務。
Pledge 的主要特點
- 執行緒安全實現
- 基於優先順序的通知機制
- 可定製的傳遞佇列
- 批次更新
- 速率限制(節流和防抖)
- 函式式運算子(對映、過濾等)
- 全域性狀態管理
提到的替代響應式框架
- Apple 的 Combine
- RxSwift
- OpenCombine
- CombineX
- SwiftUI 的 @Published 屬性包裝器
- Apple 的新宏基礎 Observable 框架
對響應式程式設計複雜性的擔憂
幾條評論涉及了 Swift 中響應式程式設計方法的更廣泛擔憂。一位開發者提到,他對使用函式式響應式程式設計構建的過於複雜的程式碼庫有創傷後應激障礙,特別提到了 Kickstarter MVVM 方法。這突顯了 Swift 社群中持續存在的張力,即強大但可能複雜的響應式模式與更簡單、更直接的方法之間的張力。
這次討論反映了一個日益成熟的生態系統,開發者對新增新的依賴變得更加謹慎,尤其是當它們與現有解決方案有很大重疊時。隨著 Swift 的不斷發展,蘋果引入了基於宏的 Observable 框架等新模式,社群似乎正在尋求響應性和簡單性之間的平衡。
有趣的是,討論中出現了一些混淆,一位評論者顯然將 Pledge 誤認為是一個身份驗證框架,而不是響應式程式設計解決方案,這凸顯了在一個擁擠的生態系統中清晰傳達新框架目的的挑戰。
參考:Pledge