Coming soon
書籍上架準備中。一旦上架完成,便可在此頁購買。
本書介紹如何在 C# 中運用不可變資料設計(immutable data design),降低可變狀態在程式中流動時帶來的除錯與維護成本。你會看到如何使用 record、init、required、with 運算式、不可變集合與模式比對,把「修改物件」改寫成更容易追蹤、測試與維護的資料轉換。
目標讀者
本書適合已經具備 C# 開發經驗,並希望改善資料模型設計、API 設計與狀態管理方式的開發者。你不需要熟悉函數式程式設計,也不需要有進階型別理論背景,但應該已經了解 class、interface、nullable reference types、LINQ,以及 async/await 的基本用法。
你也不需要預先熟悉領域驅動設計(Domain-Driven Design, DDD)或特定的分層架構。本書會使用 domain model、application layer、repository 等常見名稱來說明不同程式碼的責任;這些概念會在第一次實際使用時簡短說明。若你曾接觸 Web API 與資料存取程式碼,閱讀相關範例會更容易,但這不是必要條件。
如果你曾經遇過以下情況,本書會特別有幫助:
- 一個物件被多個方法或服務改來改去,最後很難確認資料是在哪裡被改壞的。
- 知道
record、init、with等語法,但不確定它們在設計上真正解決什麼問題。 - 想讓 DTO、domain model、事件資料或查詢結果更容易測試與追蹤。
- 想在不可變設計與現實框架限制之間取得平衡,例如 ORM、序列化、UI 資料繫結或效能敏感程式碼。
本書特色
本書以實務設計判斷為主,不把不可變資料當成單一教條。每個主題都會從常見的可變物件寫法開始,逐步改寫成更清楚的資料模型,並討論這樣做帶來的好處與代價。
本書的主要特色包括:
- 以 C# 15 與 .NET 11 為基準:範例使用現代 C# 語法與標準函式庫,必要時會說明舊版 C# 或 .NET 的替代做法。
- 從設計問題出發:不只介紹語法,而是說明何時該用
record、何時該用 class、何時該保留可變物件。 - 重視可測試性與可追蹤性:透過不可變資料,讓狀態轉換更明確,也讓測試更容易驗證。
- 討論限制與取捨:不可變資料不是免費的。本書也會說明效能、ORM、UI 資料繫結與深層資料更新等現實問題。
- 提供完整範例程式:書中的程式碼可搭配 GitHub 範例專案閱讀與實作。
本書用到的工具
為了跟著本書實作練習,你需要準備:
- .NET 11 SDK 或更新版本
- 開發工具:Visual Studio 2026、Visual Studio Code、Rider,或其他支援 .NET 的編輯器/IDE