如何在整個程式碼庫中重構函式而不破壞它
何時使用: 你需要重新命名函式、變更其簽名或內聯一個幫助函式 — 且它被用在全程式碼庫的 30 個以上檔案中。
前置條件
- 乾淨的 git 工作樹 —
git status沒有顯示任何暫存內容 — 這樣你可以用git diff檢查並在需要時git restore - 檔案系統根目錄限定在版本庫 — 使用
npx -y @modelcontextprotocol/server-filesystem /abs/path/to/repo啟動
步驟
-
找出所有呼叫位置搜尋程式碼庫中所有
getUserProfile(的用法。按檔案分組並告訴我每個檔案有多少個符合。✓ 已複製→ 檔案清單與符合計數,不區分測試與原始檔案 -
在單一檔案上乾執行編輯告訴我在 src/api/users.ts 中編輯會是什麼樣子 — 一個 diff,不是完整檔案。還不要寫。✓ 已複製→ 最小 diff 補丁,不是完整檔案重寫
-
套用到所有檔案並報告將相同的轉換套用到步驟 1 中的每個檔案。使用 edit_file (行級),不是 write_file (覆蓋)。告訴我任何模式不完全符合的檔案。✓ 已複製→ 每檔案的成功/跳過日誌
結果: 一個專注、可審查的 git diff,你可以對其執行測試 — 沒有意外的整個檔案重寫。
注意事項
- Claude 使用
write_file並在編輯複雜時無聲地丟失一半的檔案 — 明確要求原地變更使用edit_file;只允許新建檔案時使用write_file - 符合命中無關的程式碼 (例如
getUserProfileAvatar) — 限定搜尋:使用getUserProfile(加上尾部括號,或使用單字邊界 regex