design-by-contract

3 posts

你的驗證層比業務邏輯還龐大

手動驗證讓 codebase 膨脹,卻還是漏掉邊界情況。以下說明如何透過宣告式 schema 來 enforce runtime contracts,讓它們不干擾你的開發流程。

每次你的 API 收到請求,你就會驗證它。每次函式收到來自外部系統的參數,你就會檢查它。如果用手動方式處理,單一 endpoint 累積的驗證程式碼可能比業務邏輯還多。 這就是 runtime contracts 的隱藏代價。你需要它們,因為 type system 會說謊:透過 HTTP 傳來的…

AI 安全棧: types、contracts、property tests 與 mutation gates

如果你想讓 AI-generated code 能在正式環境站得住,光靠 code review 不夠。你需要一套從 type constraints 到 mutation testing 與 runtime containment 的分層安全棧。

AI-generated code 最大的危險,不是它總是錯的。 真正危險的是,它經常「看起來已經對得足夠可以 merge」。 這正是風險所在。明顯有問題的 code 往往會被擋住。真正會進正式環境的是那種看起來合理、能過幾個 happy-path tests、卻悄悄削弱關鍵 boundary 的實作。…

為什麼許多優秀的工程策略直到 AI 出現才真正變得划算

Design by contract、property-based testing、mutation testing、model checking 從來不是壞想法。真正的問題是它們長期需要太多專業判斷才能維持,而 AI 正在改變這筆帳。

軟體工程裡有很多方法,你一讀就會覺得「這本來就該這樣做」。 當然應該用 contracts 明確 function 能接收什麼、必須回傳什麼。當然 tests 不該只寫幾個人工挑選的例子,而應該驗證 properties。當然團隊不該把 coverage 當成品質代理,而應該真的去判斷 tests 能不能抓到…