4 分鐘閱讀

第 11 週開發日誌(iOS 第三週)

從 MVC、MVVM、VIPER 與 Redux 理解架構拆分,並學習溝通模式和 Charts 圖表。

1. iOS 領域課程

程式權責拆分:程式架構

這週觀看了「iPlayground 2019|漫談 iOS 架構:MVC/MVVM/VIPER 與 Redux」,了解從 MVC 到 VIPER 一路不斷拆分更細的權責。

拆得這麼細的用意,是當情境所要開發的單一程式功能龐大且多樣時(比如蝦皮、Facebook、Line 等等),為了更好維護以及除錯所選擇的架構。所以不是說選哪個架構就好棒棒、一定用這架構,而是需要知道自己所需到什麼程度的拆分。每個架構的縮寫名稱,只不過是業界在溝通上為了能更加順利以及快速了解程式碼大致架構。

Communication Pattern

程式之間權責既然拆分開來了,也就衍生出程式之間如何溝通。這週學到三種溝通方式:Closure、Protocol & Delegate、Notification Center,另一個待研究的是 KVO。

有趣的是,這週在技術支援討論時間中,發現 Apple 的架構走向(SwiftUI)逐漸在減少像是 Protocol & Delegate 等程式間的溝通,取代的是將程式每樣功能拆分得更細,像是小積木一樣,函式本身就透過積木的拼裝直接完成一個功能,而不再像是依照功能的分類拆分在不同地方,然後透過溝通來傳遞資料。

這也沒有所謂變得好或壞。個人想法上,可能這種拆分方式是較適合目前 Apple 生態系中運作?畢竟分久必合、合久必分。說不定現在逐漸合併的趨勢下,哪天又會因為程式臃腫而有其他拆分方式。工程師也必須不斷關注趨勢去變化。

資料圖表化:Charts

沒人喜歡看著一大堆數據,所以轉為圖表表達是必然的。此第三方套件已經將整個製作圖表過程相當簡化且步驟明瞭。在寫程式的過程會發現,其實難點在於資料的整理:要怎麼儲存解析後的資料、要怎麼排列表達圖表,才是最需要花費功夫的地方。

2. App 產品分析

這週挑選的 App 是 Wine-Searcher。這是一個可以透過 App 搜尋全球範圍內特定葡萄酒、威士忌、烈酒或啤酒的價格跟評論的工具。一樣只先簡略依照產品分析要點說明,詳細報告內容紀錄在 HackMD

  • 目標客群:沒有酒類專業知識但還是會小酌的人。
  • 解決或滿足了什麼樣的需求:解決搜尋評價與比價的不便性。
  • 解決的方式:用相機拍下酒標,立即透過資料庫比對搜尋,App 立即顯示平均售價與評論。
  • 能改進的地方:搜尋準確度十分高,只能說是全英文介面,加上如果要更精確的過濾條件需要額外付費,較讓人退卻之外,基本功能已非常完美。