資訊技術

C# 不可變資料設計

Records 與狀態建模

作者: 蔡煥麟
語言: 繁體中文
出版日期: 2026/11/01
定價: NT$290
閱讀方式: 線上閱讀+EPUB 下載(本站購買)

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