文章整理:停止 CRUD 思考模式 (Stop Thinking CRUD)
原始來源與檔名:Stop Thinking CRUD. How the CRUD Mindset Distorts….md
這篇文章深刻地批判了軟體開發中根深蒂固的 CRUD 思維模式。作者認為,這種以資料為中心的設計方法源於過去的技術限制,如今已成為構建複雜現代應用程式的巨大障礙。CRUD 思維會扭曲真實世界的業務流程,將豐富的「行為」和「意圖」扁平化為貧乏的資料操作,導致系統架構混亂、商業邏輯分散,最終難以維護和演進。
文章的核心論點是,我們應該進行一次思維上的範式轉移:從建模「資料狀態」轉向建模「業務行為」。具體的實踐方法是採用「事件思維 (Event Thinking)」,將系統中發生的每一個有意義的業務動作(如 訂單已下、付款失敗)視為一個獨立的「事件」來捕捉和記錄。
這種以事件為中心的設計方法不僅能讓程式碼更準確地反映業務現實,還能帶來多項好處:系統本身就包含了完整的歷史紀錄(不再需要額外的審計日誌)、商業邏輯更內聚、程式碼更易於測試和理解。最終,作者強調這並非要求開發者立即拋棄現有工具或重寫系統,而是一種更清晰、更貼近本質的思考方式,旨在將軟體設計的焦點從「資料」拉回到「行為」,從「狀態」拉回到「變更」。
各段落重點
引言
- 重點: 軟體開發普遍過度依賴以資料為中心的 CRUD 思維,這忽略了真實世界是以「流程」和「意圖」為核心。
- 總結: 當前主流的 CRUD 開發模式與真實世界的運作方式脫節。
CRUD 思維的來源 (Where CRUD Thinking Comes From)
- 重點: CRUD 思維源於以資料庫為核心、儲存成本高昂的時代,其目標是高效儲存而非模擬世界。隨著軟體需求變得複雜,這種模式已不適用。
- 總結: CRUD 是特定歷史時期的產物,已無法滿足現代軟體自動化與複雜流程的需求。
CRUD 思維如何扭曲真實世界的流程 (How CRUD Thinking Distorts Real-World Processes)
- 重點: 從 CRUD 出發會導致「上下文的喪失」,將豐富的業務行為(如「拒絕請求」)簡化為貧乏的資料操作(如
Update),從而抹殺了行為背後的「意圖」。 - 總結: CRUD 思維將動態的業務流程靜態化,導致設計脫離現實,無法捕捉到業務的核心意圖。
在程式碼與設計中的後果 (The Consequences in Code and Design)
- 重點: CRUD 思維導致系統架構以技術而非業務能力劃分,使商業邏輯被分割得支離破碎。系統難以理解、測試和維護,且無法追溯行為原因,只能依賴審計日誌彌補。
- 總結: 該思維模式會直接導致軟體架構的腐化,增加系統的複雜度和維護成本。
一種更好的思維方式 (A Better Way of Thinking)
- 重點: 解決方案是從「建模行為」和「思考事件」出發。捕捉如
OrderPlaced這類具業務意義的事件,能讓程式碼更貼近真實世界,並使系統具備可追溯性。 - 總結: 作者提倡以「事件思維」取代 CRUD 思維,將設計焦點從靜態的資料轉向動態的行為。
如何開始這種思維模式 (How to Get Started with This Mindset)
- 重點: 這是一種思維轉變,而非工具革命。具體做法包括:將業務行為視為獨立流程、記錄包含「意圖」的事件、使用業務術語溝通、隔離決策邏輯為純函數、從使用者流程角度設計。
- 總結: 作者提供了具體的實踐步驟,強調從觀念上轉變,進而在日常開發中逐步實踐以行為為中心的設計。