安全重構:保持行為不變
函數太長想拆開,但怕改壞。
提示詞長度
198
tokens
建議模型
V4 Pro
單次成本(離峰)
$0.00021
Flash
跑一萬次
$2.10
Flash 離峰
提示詞全文
請重構下面的函數,要求行為完全不變。
原函數:
```
{{代碼}}
```
重構目標:
- 單一函數不超過 40 行
- 每個函數只做一件事
- 保持對外介面(函數名、參數、返回值)不變
輸出格式:
1. 重構後的完整代碼
2. 說明拆成了哪幾個函數,各自負責什麼
3. 列出「這次重構沒有覆蓋到的邊界情況」(例如異常處理、並發、性能)
4. 給出 3 個必須測試的用例(覆蓋最容易改壞的地方)
要求:
- 不要改變任何業務邏輯,包括錯誤訊息的內容
- 不要引入新的抽象層或設計模式,除非原代碼已經在用
- 如果發現原代碼有 bug,不要順手修,單獨標出來
為什麼這樣寫
- 「行為完全不變」是重構的前提。不寫這句,模型會順手「優化」邏輯,結果你不敢上線。
- 要求「列出未覆蓋的邊界情況」非常實用 —— 重構最容易出問題的地方就是它沒動的部分。
- 「發現 bug 不要順手修」能防止你 review 時漏看一個被偷偷改掉的邏輯。
成本
按上面這段提示詞估算(輸入 198 tokens、輸出 300 tokens)。輸出長度依任務而定,實際會有差異。
| 模型 | 單次(高峰) | 單次(離峰) | 1 萬次(高峰) | 1 萬次(離峰) |
|---|---|---|---|---|
| DeepSeek Flash | $0.00042 | $0.00021 | $4.19 | $2.10 |
| DeepSeek V4 Pro | $0.00145 | $0.00072 | $14.49 | $7.25 |
模型建議:重構涉及大量隱式依賴判斷,必須用 V4 Pro。Flash 容易漏掉副作用。
變體
- 要拆成多個文件時,追加「輸出每個文件的路徑與內容」。
- 有測試覆蓋時,改成「先輸出重構後代碼,再輸出能證明等價的測試用例」。
常見失敗
- 不說「行為不變」,模型會順手改邏輯,重構變成重寫。
- 不說「不要引入新模式」,會得到一堆為了「更優雅」而增加的理解成本。