# MVVM 分享 #### 電商資訊科 陳致琦 --- MVC 有什麼問題? --- 理想中的 MVC ![](https://i.imgur.com/0v6qvQs.png) --- 在 iOS 上的 MVC ![](https://i.imgur.com/CZx2LhG.png) * Massive structure * Test is not eazy with UI --- ![](https://i.imgur.com/B1hFXsm.png) --- 聽說 MVVM 可以解決 MVC 的問題!! | | Testable | Readable | Easy of use | | -------- |:--------:|:---------:|:-----------:| | MVC | | ? | V | | MVVM | V | ? | | --- ![](https://i.imgur.com/eBV4VKJ.jpg) --- 源自於 Windows ![](https://i.imgur.com/etWmWNT.gif) --- 看起來很棒,但是要怎麼實作 ? ![](https://i.imgur.com/hpH8YN1.jpg) --- * 坦白講,光 Binding 我就炸了 * ReactiveCocoa * RxSwift * ReactiveSwift --- 架構變得更亂,一個月後我看不懂自己在寫什麼! --- 重點是,連原來的 Code 怎麼寫都忘啦!! ![](https://i.imgur.com/ABcyeGu.jpg) --- * 別說那麼多了,先來看 Demo 吧 * ViewModel * Call Service API * Model Mapping ViewModel * Binding * Testing --- 看完 Demo 後,思考一下... --- 你覺得 MVVM 主要在解決什麼問題? --- UITest ![](https://i.imgur.com/E3GCQkF.png) --- Test with MVVM ![](https://i.imgur.com/OB5y7tG.png) --- 關於 Testable,MVVM 效能完勝!! 0.0195秒 vs 24秒 --- UITest 跑完 1 個測試案例的時間約 8 秒 相當於 MVVM Test 可跑完 1230 個測試案例 --- 若 UITest 要跑完 1230 個測試案例 需 9846 秒,約 2.73 小時 --- MVVM 可以提高測試覆蓋率嗎? --- UITest ![](https://i.imgur.com/j9SDMgG.png) --- Test with MVVM ![](https://i.imgur.com/8QaqBB9.png) --- MVVM 覆蓋率會降低,但是... 覆蓋率高並不代表測試品質就是好的 --- MVVM 真像網路上說的,能用來解決架構混亂的問題嗎? --- ![](https://i.imgur.com/pRt8nN5.jpg) --- 有沒有其他方法可以達到相同目的? --- * 程式瘦身 * Abstract * Protocol * Extract Function * 整理分類 * Extension --- 實作 MVVM 一定要做 Binding 嗎? --- Single Source of Truth --- * 重點是 ViewModel,不是 Binding * 複雜度會提高,請謹慎使用 * 若沒有 UI 狀態即時連動的需求,可考慮不用 --- Thanks for your listening!
{"metaMigratedAt":"2023-06-14T22:27:10.658Z","metaMigratedFrom":"Content","title":"MVVM 分享","breaks":true,"contributors":"[{\"id\":\"0d5eba00-e8f9-43c8-b642-762bc7fdbdec\",\"add\":5255,\"del\":3454}]"}
    423 views