119 lines
2.7 KiB
Markdown
119 lines
2.7 KiB
Markdown
# 重構 (refactor)
|
||
|
||
> **執行方式**:以下 `agent-ide` 指 `node ${PLUGIN_ROOT}/bin/agent-ide.js`
|
||
> (PLUGIN_ROOT = 此 skill 所在 repo 根目錄,往上三層)
|
||
|
||
提取函數、內聯函數等重構操作。
|
||
|
||
## 支援的動作
|
||
|
||
| 動作 | 說明 |
|
||
|------|------|
|
||
| `extract-function` | 提取程式碼為函數(TS/JS) |
|
||
| `extract-closure` | 提取程式碼為閉包(Swift) |
|
||
| `inline-function` | 內聯函數呼叫 |
|
||
|
||
## 用法
|
||
|
||
```bash
|
||
# 提取函數
|
||
agent-ide refactor extract-function --file src/file.ts --start-line 10 --end-line 20 --function-name newFn --dry-run
|
||
|
||
# 提取閉包(Swift)
|
||
agent-ide refactor extract-closure --file src/file.swift --start-line 10 --end-line 20 --function-name newClosure --dry-run
|
||
|
||
# 跨檔案提取(提取到新檔案並自動加入 import)
|
||
agent-ide refactor extract-function --file src/file.ts -s 10 -e 20 -n helper --target-file src/utils.ts --dry-run
|
||
|
||
# 內聯函數
|
||
agent-ide refactor inline-function --file src/file.ts --function-name helperFn --dry-run
|
||
```
|
||
|
||
## 參數
|
||
|
||
### extract-function / extract-closure
|
||
|
||
| 參數 | 說明 |
|
||
|------|------|
|
||
| `--file` | 來源檔案路徑 |
|
||
| `-s, --start-line` | 起始行號 |
|
||
| `-e, --end-line` | 結束行號 |
|
||
| `-n, --function-name` | 新函數名稱 |
|
||
| `-t, --target-file` | 目標檔案(跨檔案提取) |
|
||
| `--dry-run` | 預覽模式 |
|
||
| `--format` | 輸出格式 |
|
||
|
||
### inline-function
|
||
|
||
| 參數 | 說明 |
|
||
|------|------|
|
||
| `--file` | 檔案路徑 |
|
||
| `--function-name` | 要內聯的函數名稱 |
|
||
| `--dry-run` | 預覽模式 |
|
||
| `--format` | 輸出格式 |
|
||
|
||
## 輸出格式
|
||
|
||
### diff(預設)
|
||
|
||
```diff
|
||
--- a/src/services/order-service.ts
|
||
+++ b/src/services/order-service.ts
|
||
@@ -1,4 +1,4 @@
|
||
+function extractedFn(order: Order) {
|
||
+ // extracted code
|
||
+}
|
||
+
|
||
export class OrderService {
|
||
processOrder(order: Order) {
|
||
- // original code here
|
||
+ extractedFn(order);
|
||
}
|
||
}
|
||
|
||
Summary: 1 file, 4 changes, (+2 -2)
|
||
```
|
||
|
||
### summary
|
||
|
||
```
|
||
Extracted function 'extractedFn'
|
||
|
||
Files: 1
|
||
Changes: 4 (+2 -2)
|
||
|
||
Files:
|
||
src/services/order-service.ts: code refactored (+2 -2)
|
||
```
|
||
|
||
### json
|
||
|
||
```json
|
||
{
|
||
"command": "refactor",
|
||
"success": true,
|
||
"files": [
|
||
{
|
||
"filePath": "src/file.ts",
|
||
"hunks": [
|
||
{
|
||
"header": "@@ -10,15 +10,20 @@",
|
||
"lines": [
|
||
{ "type": "add", "lineNumber": 10, "content": "function newFn() {" },
|
||
{ "type": "add", "lineNumber": 11, "content": " // extracted code" },
|
||
{ "type": "add", "lineNumber": 12, "content": "}" }
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"summary": { "totalFiles": 1, "totalChanges": 5 }
|
||
}
|
||
```
|
||
|
||
## 特性
|
||
|
||
- 自動分析變數依賴,生成正確的參數列表
|
||
- 跨檔案提取自動加入 import/export
|
||
- 內聯時自動處理參數替換
|