作者序
以當前 LLM(Large Language Model)的能力,開發人員可能只要對 AI agent 說:「幫我把這個專案的某些類別重構成 immutable types。」AI 就能完成重構,連相關的測試也一併寫好。
然而,開發者如何能確定專案中的哪些部分應該要採用不可變設計(immutable design)?預期能帶來哪些好處?如何驗證其效益?以及,如何判斷 AI 採取的作法是恰當的?
我認為,無論與 AI 工具的協作方式是 HOTL(Human-on-the-Loop)還是 HITL(Human-in-the-Loop),即便開發者連一行程式碼都不用寫,仍然需要具備「設計決策的判斷能力」。我希望這本書能在這方面提供一些幫助。
備註:HOTL 指 AI 自主執行工作,由人監督其運作,並在必要時介入;HITL 則將人的參與納入工作流程,例如由人審核 AI 的提案,確認後才執行下一步。
對有經驗的 C#/.NET 開發者而言,這也意味著重新思考熟悉的設計方式。物件導向仍有它的適用場景,而隨著 C# 語言版本的演進,以資料為中心的設計方式也越來越值得嘗試。
C# 的 record、init、模式比對,加上 .NET 的不可變集合,讓開發者更容易將資料與操作分開思考。然而,知道這些工具怎麼用,與理解它們能帶來什麼設計上的改變,仍有一段距離。我希望這本書能稍稍縮短這個距離。
是為序。
蔡煥麟 (Michael Tsai)