principle-migrate-callers-then-delete-legacy-apis | 同批遷移呼叫端與退役舊介面
本頁以 pstack-claude 0.9.126 為基準。原文設定 user-invocable: false,通常由 poteto-mode 按需讀取。可用自然語言要求「套用 principle-migrate-callers-then-delete-legacy-apis」,先判斷是否符合適用前提。
定位與適用情境
這項原則適用於引入新內部應用程式介面(API)時,將呼叫端遷移與舊介面移除放在同一波工作,不長期保存無必要的相容層。原文要求測試改為驗證新契約,移除只保護重構前實作細節的測試。
本例的內部報價工具要把多個位置參數的 calculateQuote 換成接收具名欄位物件的 quoteOrder。輸入是舊介面、兩個內部呼叫端及測試。已知沒有外部使用者,所有呼叫端都能協調更新,才適合採用這項原則。
準備
- 取得完整搜尋範圍,包括匯出入口、測試、腳本與動態載入位置。搜尋不到呼叫不等於已證明沒有外部使用者。
- 確認專案可以同批接受破壞性變更(Breaking Change),並取得介面退役與必要刪檔的授權。
- 寫下新契約的輸入欄位、報價結果與錯誤行為。既有業務行為的測試不可只因改名就移除。
操作步驟
- 核對適用前提。 列出誰使用舊介面、是否有已發布套件或獨立部署消費者。若無法確認外部相容需求,先回報缺口,不直接套用同批刪除策略。
- 訂出新契約。 對照新舊輸入與可觀察結果,辨認哪些是預期的新規格,哪些業務行為必須保留。讓測試驗證契約,不鎖定舊函式的內部呼叫順序。
- 規劃同批遷移。 把兩個內部呼叫端、匯出入口與契約測試納入同一波修改。每個呼叫端都直接使用新介面,不新增永久的舊名稱轉接器。
- 驗證後退役。 在實作獲准後搜尋舊名稱與轉接路徑,執行型別檢查及契約測試。依核准範圍移除舊介面與純實作細節測試,再重跑檢查,確認沒有懸空參照。
可直接使用的提示詞
套用 principle-migrate-callers-then-delete-legacy-apis。請盤點內部報價工具的 calculateQuote 呼叫端,評估改成 quoteOrder 具名欄位物件後,能否在同一波遷移並退役舊介面。
先證實沒有外部相容需求,列出所有呼叫端、匯出與測試。區分應保留的業務行為測試,以及只保護舊實作細節的測試。
這輪只做唯讀盤點與遷移計畫,不修改或刪檔。列出需要核准的移除項目,以及退役前後要執行的檢查。若搜尋範圍不完整,明確回報,不能直接宣告可刪。
預期結果與驗收
預期交付一份完整遷移清單,而不是只增加新介面。
- 每個已知舊呼叫端都有對應的新呼叫方式,包含測試與匯出入口。
- 能指出不需要外部向後相容的證據,以及尚未確認的搜尋範圍。
- 移除清單僅包含舊介面與失去意義的實作測試,仍保留業務行為驗證。
- 獲准實作後,舊名稱沒有殘留的可執行參照,新契約測試與相關檢查通過才算退役完成。
限制與權限
常見誤用是對公開套件也直接刪除舊介面,或為求搜尋結果歸零而刪掉仍有價值的測試。原文前提是沒有外部使用者依賴相容性,且專案能吸收協調式變更。
這項原則不是刪檔授權,也不替代版本政策或發布確認。若仍有外部呼叫端、獨立部署服務或未知消費者,應重新評估遷移策略,不硬套同批移除。