# Engineering Economy

> 工程經濟法則——用最少的更改、最短的測試時間,做出最好的功能且不出錯。用於任何實作決策:優先複用已驗證路徑(含先查外部世界的成熟做法、借鑑不照抄)、外科手術式修改、跨消費者的資料契約先凍結、介面先出原型再寫碼、測試分層省時、一個保證只驗一層、非確定性依賴用替身、失敗偏安全側、效能用 baseline 斷言押著(耗時+峰值記憶體)。

- Skill: `poloplay0114/engineering-economy-2` (Agent Skill)
- Install (CLI): `npx skillmds@latest add poloplay0114/engineering-economy-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/poloplay0114/engineering-economy-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: poloplay0114 (https://skillmd.com/u/poloplay0114)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/poloplay0114/engineering-economy-2

---


# 工程經濟(Engineering Economy)

## 什麼時候用

每一個「怎麼做」的決策。工程的成本不只是「寫出來」,還有**改的成本、驗的成本、將來錯的成本**。
這技能是一組讓四件事同時成立的法則:**更改少、功能佳、測試時間少、完善不出錯**——省下來的力氣
拿去做更多真正的功能。

---

## 一、更改少(改動面越小,越好驗、越不易壞)

### 法則 1:優先複用已驗證的既有路徑,不新建平行機制

要做新功能,先問「現有哪條路徑已經做過類似、且驗證過了?」——**騎上去**,別另起一條平行的新機制。
新路徑 = 新的未驗證表面 = 新的出錯來源 + 又要重新建一整套驗證。複用已驗證路徑,新功能幾乎免費繼承
它的正確性保證。

**★「已驗證路徑」包含外部世界的(先查外部經驗再開工)**:撞牆時你踩到的,很可能是全世界都踩過的
已知特性(例:某主流函式庫官方文件明載一般載入記憶體≈檔案 50 倍——三輪 OOM 硬撞,一查官方文件即解,
正解〔串流模式〕人家寫好了)。開工前/卡關時先查官方文件、成熟函式庫、論文,成本是幾分鐘,省的是幾輪
重撞。**但借鑑不照抄**:①採用前用**自己的 oracle** 考它(外部庫也會錯,不因開源就採信);②列明你在
它上面疊的**差異層**(你的場景多要什麼保證);③它的通用解若有隱藏坑(如「持久化」被實作成整包序列化
=問題原地復活),要辨識出來——借地基,牆自己砌。

**★外查的時點=開工前,不是撞牆後**:「遇到問題才查」是救火式外查——學費已付才翻圖紙,冤枉路
已經走完了。正確的時序是:任何**新區塊**(要發明新機制/新資料流/新互動模式)動工前,第一個交付物
=半頁「外查對標摘要」:①業界標準做法(2-3 源交叉)②要跟的部分③要更好的差異層④明知偏離之處+理由。
摘要過了把關才寫第一行碼。修 bug、既有機制內迭代不需重查。反例實錄:同一專案,資料層開工前外查
=一路站在標準上;介面層跳過外查徒手現想=分頁狀態、任務還魂、重連語意逐顆踩雷,事後一查——每顆
的標準答案早就印在業界文獻裡。同一批人、同一週,差別只在查的時點。

### 法則 2:外科手術式修改,不重寫整段

改既有程式時,做**最小切口**:只動需要動的,不順手重寫整段。重寫 = 把一段已驗證的東西變回未驗證,
風險與驗證成本全部重來。「能加一個 if 解決,就不重構整個函式。」

### 法則 3:跨消費者的資料契約先凍結,消費端才有得接

當一份資料/介面會被**別的模組或別的階段**消費時,先把它的**結構(schema)定死**,再往下做。
- 消費端靠這個契約對接;契約晚定 = 消費端無所適從,或先做了再返工。
- 尤其「這批只生產、下批才消費」的東西:結構先凍結 + 誠實標「已產出待消費」,下批直接接,不用回頭
  重問一次(拍板不會蒸發)。

### 法則 4:介面類交付,先出靜態原型定調,拍板後才寫碼

要做「人要看的東西」(UI、報告版面、對話流程)時,先做**不接後端的靜態原型**(mock)給決策者定調
——長相、文案、流程對不對。**拍板後才寫真的碼**。理由:介面的返工最貴(碼 + 樣式 + 接線全牽動),
把「這樣對嗎」提前到最便宜的原型階段解決。

---

## 二、測試時間少(驗證是每次都要付的稅,要壓到最低)

### 法則 5:測試分層經濟學

按「跑多快 × 多常跑」分層:
- **秒級煙霧**:每次改動都跑,只驗最關鍵的活著沒。
- **分鐘級針對性**:改什麼驗什麼(靠相依追蹤),只跑被影響的。
- **全量**:慢、全面,**只在合併關口跑一次**(可排離峰)。
日常靠前兩層飛快,全量的成本攤在關口。
（此處講「為什麼分層能省時間/成本怎麼算」;每層各自要驗什麼正確性職責,見姊妹技能
**verification-discipline** 的「分層驗證」。成本面與正確性面,合起來讀才完整。）

### 法則 6:一個保證只住一層,絕不重複驗

同一個保證別在多層各驗一次——重複 = 白付成本。分工:
- **單元層**:驗**確定性邏輯**(給定輸入 → 固定輸出)。
- **整合層**:驗**鏈路接通**(各環節串起來能跑)。
- **真實環境層**:只**抽驗**(真實環境貴又慢,證關鍵路徑通即可,不重複單元已保證的)。

### 法則 7:非確定性依賴用「注入替身」進回歸門,真實版本只選擇性抽驗

網路、AI 模型、時鐘、隨機——這些**非確定性依賴**若直接進自動回歸門,會**隨機假失敗**,每次假 fail
都要花時間重跑排查,長期成本巨大。做法:
- 回歸門裡用**注入的替身**(mock/stub/fake),確定性、不吃網路、可重現。
- 真實版本只做**選擇性抽驗**(opt-in,無金鑰/無網路就跳過),不當每次必跑的回歸門。
- 好處:回歸門永遠確定性綠,把「非確定性」擋在門外。

### 法則 8:測試隔離,防「假卡」燒時間

測試之間互不干擾——各自用獨立的臨時檔/狀態,跑完清乾淨。沒隔離好的代價很具體:殘留的舊進程搶檔鎖、
上一輪的狀態污染下一輪 → **假卡 / 假失敗**,每次排查燒數十分鐘。隔離做在前面,一次投資、長期省。
（假卡的當場處置——按進程 ID 精準清、乾淨重跑取綠——見 **handoff-protocol** 的「假卡 vs 真失敗」。）

### 法則 9:精確對帳,讓「針對性」可信

敢只跑針對性測試(而非每次全量)的前提,是**你信得過針對性覆蓋了該覆蓋的**。靠精確對帳撐:
「基準 N + 新增 M = N+M」——數字對得上,才敢說「這次只需驗這些」。對帳鬆散 → 只能每次全量兜底,
省不了時間。

---

## 三、完善不出錯(省下的成本不能用正確性換)

### 法則 10:每條測試明寫「保證範圍」——驗到哪、沒驗到哪

一條測試要誠實標明它**證明了什麼、沒證明什麼**。假的安全感比沒有安全感更危險——
以為驗過了其實沒驗到的那一塊,正是將來出事的地方。「這條證了計算對,沒證前端接線」——寫清楚。

### 法則 11:失敗模式偏安全側,擋掉的是最貴的成本

省成本不能省到把風險倒向「錯得無聲」。偏安全側看似「多花一點」,其實**擋掉的是最貴的成本**——
無聲的錯流到下游、將來才爆、追起來最貴;而偏安全側的代價(多問一次、多擋一次)是當下、微小、可見的。
拿微小可見的成本換掉巨大隱形的成本,這筆帳永遠划算。
(「偏安全側」**具體怎麼做**——判不準當沒過、抽取不確定交還人——是行為準則,權威版見姊妹技能
**verification-discipline** 的「失敗模式偏安全側」;此處只講它在成本上為什麼不虧。)

### 法則 12:效能是被斷言押著的,不是口頭的

「這樣做比較快/不吃記憶體」是宣稱;**進了回歸門的 baseline 斷言**才是保證:
- **耗時**與**峰值記憶體(RSS)**各記 baseline,斷言 ≤ baseline×寬容係數(如 1.5);超過=FAIL,非警告。
- **一次性成本與穩態成本分列立基準**(冷/暖各一條),別讓一邊藏掉另一邊(判定原則見
  verification-discipline 法則 3)。
- 配**破壞測試**:故意退回慢路徑→會吠;故意用會爆記憶體的寫法(如整包物化)→會吠。守門的先驗會吠。
- 帳怎麼算:效能退化在 pre-merge 被斷言擋下=幾分鐘;流到生產才發現「怎麼變慢/怎麼炸了」=排查+回滾+
  信任損失。基準數字**待實測才寫**(憑空拍=假精確),量出來就立刻立門。

---

## 本專案案發現場(佐證,非通用必需)

- **複用已驗證路徑(法則 1)**:第三批「採用提煉候選」直接騎上一批剛驗完的「生碼→查證→進佇列」既有
  軌,不新建落地機制——新功能免費繼承那條軌的正確性,零新安全機制。
- **契約先凍結(法則 3)**:「這批只捕捉決定、下批才執行合併」——決定捕捉檔的 schema 先定死 + 標
  「已決定待執行」,下批消費端直接接,不用回頭重問(呼應早先「schema 先定」教訓)。
- **原型先行(法則 4)**:對話流程先出靜態 mock 給人定調台詞/卡長相,拍板後才寫碼——沿用更早「四欄
  確認卡 mock 先行」的成功模式。
- **注入替身進門(法則 7)**:AI/網路查證用 MockProvider 注入進回歸門(確定性),真上網只 opt-in 抽驗、
  無金鑰跳過,不當回歸門。
- **隔離防假卡(法則 8)**:曾因殘留測試進程搶 Windows 檔鎖造成假卡,燒掉排查時間;修測試隔離
  (臨時檔、monkeypatch 檔路徑)後根治。
- **分層 + 對帳(法則 5/9)**:三層回歸 + 每批「baseline + 新測」對帳,讓日常只跑針對性、全量攤在合併
  關口。
- **外部經驗即解(法則 1 擴充)**:大檔整頁載入連炸三輪 OOM,一查官方文件——「一般載入記憶體≈檔案
  50 倍」白紙黑字,官方正解=串流模式;同輪也靠外查擋掉一個隱藏坑(把「持久化查值表」實作成整包序列化
  →載回時整包重建=尖峰復活),改為磁碟點查。先查外部,三輪硬撞變一輪即解。
- **效能斷言進門(法則 12)**:大檔種快取流程把「耗時 baseline×1.5 + 峰值 RSS baseline×1.5 + 兩個
  破壞測試(退慢路徑會吠/整頁物化會吠)」寫進封版關口規則,冷/暖分列;基準值等真批量實測落定才寫入,
  不憑空拍。


