DDD 相關 - daniel-qa/Vue GitHub Wiki
Windsruf 的 workflow 加上 DDD ( Data Schema)
DDD 相關
DDD 是一種設計學科,其中你
掌握領域
就一種語言達成一致
用共享模型表達出來
擁抱複雜性
不同情境下的獨立模型
並不斷發展它們
DDD 並非適用於所有領域,而是應用於能夠產生最大影響的地方。
- 相關的 TERM
CQRS (Command Query Responsibility Segregation)
傳統的開發模式通常使用同一個模型(Model)來處理數據的「讀」與「寫」,但當系統變大時,讀寫的需求往往是衝突的。
CQRS 的核心思想是將這兩者完全拆分:
Command(命令/寫): 負責「新增、刪除、修改」。它關注的是業務邏輯的正確性、數據的完整性(如:扣款時餘額是否足夠)。
Query(查詢/讀): 負責「讀取、顯示」。它關注的是速度與呈現方式(如:多表關聯、分頁、搜尋)。
為什麼重要?
效能優化: 你可以針對查詢端建立專用的快取或索引,而不影響寫入端的結構。
架構解耦: 寫入端可以保持乾淨的領域模型(DDD),查詢端則可以直接對接 UI 需求。
- 變異測試 (Mutation Testing)
「測試」你的「測試」
「故意把程式碼改壞,看你的測試能不能抓到這個錯誤。」
普通的單元測試通常看「測試覆蓋率(Code Coverage)」,但覆蓋率高並不代表測試是真的有效的。變異測試是一種更激進的方法,用來驗證你的測試程式碼是否真的能抓到錯誤。
運作流程:
製造「變異體」(Mutants): 系統會自動修改你的原始碼。例如將 a > b 改成 a < b,或將 + 改成 -。
執行測試: 跑一遍你寫的測試程式。
判定結果:
變異體被殺死 (Killed): 你的測試失敗了。這代表你的測試很棒,有發現程式被改壞了。
變異體存活 (Survived): 你的測試依然通過。這代表你的測試有漏洞,即便程式邏輯改錯了,你的測試也沒發現。