principle-subtract-before-you-add | 先減去負擔再擴充
本頁以 pstack-claude 0.9.126 為基準。原文設定 user-invocable: false,通常由 poteto-mode 按需讀取。它主張先簡化再建構,不是未經確認的清理授權。
定位與適用情境
新增、重構或重寫前,先減去沒有實際用途的複雜度。不要為推測的邊界情況添加驗證器、解析器或防護,也不要保留沒有獨立內容的空殼參照。取捨要來自規格及觀察到的使用方式。
例如通知服務要新增每週摘要信。程式中還有停用的簡訊格式分支、與入口重複的驗證,以及只轉述主文件的摘要說明。若直接把新摘要接上所有舊分支,日後維護者必須理解更多本來可以移除的路徑。
準備
- 提供現行通知規格、格式分支、呼叫端、功能開關、測試與相關文件。
- 準備每週摘要的必要輸入及輸出範例,確認哪些舊通知仍受支援。
- 區分「已證實不用」與「暫時查不到使用」。動態載入、外部整合或執行期設定仍可能使用看似無呼叫的路徑。
操作步驟
- 盤點新增摘要會經過的分支與驗證,記錄用途證據。將仍有效的防護、已證實失效的路徑及無法確認的項目分開,不按名稱或檔案年齡判定。
- 提出先減法的變更清單。例如停用簡訊分支在確認無消費者後可列為移除候選;重複驗證要先證明同一邊界已涵蓋其契約。沒有新內容的參照可建議刪除,但須先檢查連結與刪除授權。
- 待取得核准後,先做最小簡化並驗證既有通知行為。不要在即將移除的分支上先投資格式美化,也不要順手刪除必要文件或歷史註解。
- 在簡化後的基底加入每週摘要所需能力,僅覆蓋規格要求的格式與錯誤情況。比較前後介面及分支,確認新增能力沒有帶來多餘的擴充框架。
可直接使用的提示詞
套用 principle-subtract-before-you-add,評估通知服務新增每週摘要前可先簡化哪些地方。
輸入包含現行規格、格式分支、呼叫端、功能開關、測試及文件。
分別列出已證實可移除、應保留與證據不足的項目,附用途及參照依據。
先提出簡化順序與保行為檢查,再列新增摘要的最小能力。
不為假想格式加解析器。不刪檔、不刪舊 API 或 dead code,先交付待核准清單。
預期結果與驗收
- 每項刪減建議都有用途、消費者與規格依據,不能只寫「看起來沒用」。
- 簡化前後,既有有效通知的內容與錯誤行為相同。必要邊界驗證未因重複之名被移除。
- 每週摘要有具體輸入與輸出驗收,不附帶未被需求支持的格式註冊框架或防護層。
- 證據不足的分支仍被保留並列明缺口。文件的有效內容與仍需遵守的說明沒有遺失。
限制與權限
常見誤用是把「先減法」當作追求刪除行數,移除仍有效的驗證、安全限制或相容需求。另一種是刪去主要內容,卻留下只會增加閱讀跳轉的空殼檔。
原文的刪除建議不構成本次刪除舊 API、dead code 或任何檔案的授權。準確繁體中文功能註解、有效文件、TODO、license 與被註解的舊程式也不能一概清除。本頁只描述教學順序,沒有實際執行清理或新增通知功能。