🎯 什麼情境該想到我
分工:這張是提醒卡。怎麼在 Go 型別系統中落實通用語言、三個容易漏掉的邊界、建立它的三個具體動作 → 通用語言(型錄頁)。
當工程師與業務/PM「講的是同一件事卻用不同詞」、需求翻成程式碼常失真時。
⚙️ 怎麼用
- 建立一套團隊 + 領域專家共用的詞彙:一個概念一個名字,全員(含文件、對話、程式碼)都用它。
- 讓程式碼直接反映這套語言:類別/方法名 = 領域術語,讀 code 像讀業務。
- 發現詞彙模糊或衝突,就當場澄清並更新——語言的演進就是模型的演進。
- 詞彙若在不同脈絡意義不同 → 那是要切 工具-限界上下文 的訊號。
★ 三個自我檢查問題
- 業務人員說的詞,能在程式碼裡搜尋到嗎? 業務說「退貨」,程式碼裡卻叫
ReverseTransaction→ 語言斷了,翻譯的地方就是 bug 的溫床。 - 同一個詞在程式碼裡只有一個意思嗎?
Account在帳務模組是「會計科目」、在會員模組是「登入帳號」→ 這是兩個工具-限界上下文的訊號,要分開建模,而不是做一個萬用的Account。 - 程式碼裡有沒有業務聽不懂的詞?
OrderManager、ProcessData、status = 3→ 這些是技術詞或魔術值,業務無法確認它們對不對。
★ 最小的實踐
- 在 repo 裡放一份活的詞彙表(例如
CONTEXT.md或docs/glossary.md),每個詞寫一句定義與一個反例(「退貨 ≠ 取消訂單:取消發生在出貨前」)。 - code review 時把「命名與詞彙表不一致」當成正式的審查意見。
- 詞彙表要跟著討論更新;會議中出現新詞或爭議詞時,當場記下來。
🧪 我實際套用的紀錄
- 2026-07-14:(待填)
⚠️ 注意
- 通用語言要「活」在日常溝通與程式碼裡,不是一份放著長灰塵的詞彙表。
🔗 相關工具
- Skills For Real Engineers —— 通用語言的 agent 版:把行話寫進
CONTEXT.md,除了溝通一致,還讓 agent 少花 token 思考、更好導航 codebase - 工具-限界上下文 —— 配套概念,通用語言只在一個上下文內成立,跨上下文同詞可以不同義
- 工具-有意義的命名 —— 落到程式碼那一步,通用語言的詞要原封不動出現在型別與方法名上