協定導向程式設計(POP),超越OOP限制的方法
協定導向程式設計(POP)不是依據型別繼承了什麼,而是依據型別能做什麼來設計。本文以Swift範例整理繼承的限制、透過協定組合解決的方法,以及應避免使用的情境。
閱讀文章精選主題 · 41 篇文章
從基礎原理到實務取捨,系統化瀏覽 iOS 開發 文章。
最新文章
協定導向程式設計(POP)不是依據型別繼承了什麼,而是依據型別能做什麼來設計。本文以Swift範例整理繼承的限制、透過協定組合解決的方法,以及應避免使用的情境。
閱讀文章RIBs 不是以畫面,而是以商業邏輯單位拆分 App。本篇整理無畫面元件存在的前提、只適合超大型組織的原因,以及它和 VIPER 的差異。
閱讀文章ReactorKit 是讓 UIKit 與 RxSwift 組合採用單向資料流作為標準的架構。本文整理 View 與 Reactor 的兩種角色、需要 Mutation 中間階段的原因,以及它與 TCA 的差異。
閱讀文章如果你一路讀到這裡,iOS 架構系列的選項已經全部攤在眼前:MVC、MVVM、MVP、VIPER、Clean Architecture、MV,以及 TCA。
閱讀文章在 SwiftUI 時代的架構討論中,有一個名字總是無法避開:Point-Free 打造的 TCA(The Composable Architecture)。
閱讀文章你常會在徵才公告或技術部落格中看到「以 Clean Architecture 為基礎」這句話。但實際打開程式碼後,會發現每個團隊的樣貌都不一樣。有些地方有 UseCase,有些沒有,Repository 的職責也各不相同。
閱讀文章Swift Copy-on-Write 在值型別被指派時共用儲存空間,只有其中一方修改的瞬間才會實際複製。本篇說明這項最佳化如何維持值語意,同時降低原型模式的作用。
閱讀文章Swift 靜態工廠方法可透過名稱表達建立意圖,並控制回傳型別、快取與實例重用。本文整理選擇 static func make 而非 init 的優缺點,以及它與 GoF 模式的差異。
閱讀文章學習 iOS 開發時,到了某個階段一定會遇到 RxSwift 或 Combine 這道牆。它們幾乎必定出現在徵才公告中,但實際打開程式碼,看到 map、flatMap、sink 一路串接的陌生語法,很容易感到不知所措。「明明用閉包和委派就能正常運作,真的有必要學這個嗎?」
閱讀文章翻開設計模式的書,總會在接近最後的地方看到直譯器模式。這是很容易因為「這到底什麼時候會用到」而隨便跳過的模式。
閱讀文章你是否曾在不同類別中複製貼上相似邏輯,心想「這好像不太對」?在 iOS App 裡,當你第三次複製各畫面的資料載入程式碼時,手往往就會停下來。
閱讀文章在 Objective-C 程式碼中,用方括號包住的 [receiver message] 語法,看起來就像一般的方法呼叫。
閱讀文章使用 Swift 開發 App 時,我們每天會寫數十次像 for item in array 這樣的迴圈。因為太習慣了,直到嘗試用 for-in 迭代自訂型別並遇到編譯錯誤,才會好奇:「這個迴圈到底在內部做了什麼?」
閱讀文章Facade Pattern 會在多個物件交織的子系統前,提供一個簡單的單一入口。本文以 Swift 會員註冊為例,說明如何集中管理呼叫順序,以及它與 Adapter、Proxy、Decorator 的差異。
閱讀文章狀態模式會將各狀態的行為與轉換集中到物件或 enum 中,減少散落各處的條件判斷。本文說明重構 Swift 畫面狀態的順序與策略模式般的結構如何依設計意圖區分。
閱讀文章開發 App 時,有時需要建立數千甚至數萬個相似物件。最典型的例子是在地圖上撒出數萬個標記;在這種情況下,記憶體圖表很容易持續攀升。
閱讀文章SwiftUI 介紹文件的第一行,總會出現「宣告式(declarative)框架」這個說法。React 和 Jetpack Compose 也都稱自己為宣告式。
閱讀文章Swift 工廠函式會為建立邏輯加上表達意圖的名稱,並讓回傳型別與重用策略更具彈性。本文整理選擇 static func 而非 init 的判斷標準,以及它與 GoF 工廠方法的差異。
閱讀文章適配器模式會將舊版 API 的介面轉換成新程式碼所期待的協定。本篇整理如何在 Swift 中建立轉換邊界、簡化替換與測試,以及它和其他包裝模式的差異。
閱讀文章上一篇介紹了 Massive View Controller 產生的原因。由於檢視控制器同時兼任 View 和 Controller,無處可放的程式碼最後全都堆到那裡。
閱讀文章進行 Swift 開發時,經常會遇到只用一行 static let shared 建立的 Singleton。
閱讀文章開始學習 iOS 開發後,一定會遇到一種語言:充滿中括號的陌生語法,以及 NSString 這類讓人摸不著頭緒的前綴。
閱讀文章使用 Swift 開發 App 時,是否曾經用 do-catch 捕捉錯誤,卻發現真正顯示在畫面上的訊息實在不太理想?
閱讀文章