|
1 | | -# 場景 2:程式碼解釋實作 |
| 1 | +# 場景 2:程式碼解釋與 Inline Edit |
2 | 2 |
|
3 | 3 | ## 🎯 學習目標 |
4 | | -- 學習使用 **@workspace** 參與者來理解整個專案 |
5 | | -- 掌握如何請 Copilot 解釋複雜的程式碼 |
6 | | -- 了解如何詢問程式碼之間的關聯性 |
7 | | -- 探索程式碼的執行流程 |
| 4 | +- 深入使用 **@workspace** 理解專案架構 |
| 5 | +- **掌握 Inline Edit (Ctrl+I) 快速修改技巧** |
| 6 | +- **理解 Inline Edit vs Chat Edit 使用時機** |
8 | 7 |
|
9 | 8 | ## 📝 場景說明 |
10 | 9 | 您接手了一個既有的電子商務購物車系統,需要理解其架構和運作方式。透過 GitHub Copilot 的 @workspace 功能,快速掌握整個專案的結構。 |
|
23 | 22 |
|
24 | 23 | ## 📚 Demo 劇本 |
25 | 24 |
|
26 | | -### 步驟 1:使用 @workspace 了解專案結構 |
27 | | -在 Copilot Chat 中輸入: |
28 | | -``` |
29 | | -@workspace 請說明這個專案的整體架構和各個檔案的功能 |
30 | | -``` |
| 25 | +### 階段 1:@workspace 程式碼理解 (3分鐘) |
31 | 26 |
|
32 | | -### 步驟 2:詢問特定功能的實作 |
| 27 | +#### 步驟 1:專案架構分析 |
33 | 28 | ``` |
34 | | -@workspace calculateTotal 函數是如何計算總金額的?它考慮了哪些因素? |
| 29 | +@workspace 請分析這個購物車系統的架構,說明主要功能和檔案關係 |
35 | 30 | ``` |
| 31 | +💡 **使用模式:Ask** |
36 | 32 |
|
37 | | -### 步驟 3:理解檔案之間的關係 |
| 33 | +#### 步驟 2:追蹤關鍵函數 |
38 | 34 | ``` |
39 | | -@workspace cart.js 和 products.js 是如何互相配合的?請說明資料流向 |
| 35 | +@workspace calculateTotal 函數的運作流程是什麼?它與哪些函數互動? |
40 | 36 | ``` |
| 37 | +💡 **使用模式:Ask** |
41 | 38 |
|
42 | | -### 步驟 4:找出關鍵函數 |
| 39 | +#### 步驟 3:理解資料流向 |
43 | 40 | ``` |
44 | | -@workspace 這個購物車系統的核心功能有哪些?請列出最重要的函數 |
| 41 | +@workspace 當使用者點擊「加入購物車」按鈕時,資料是如何在各個檔案間流動的? |
45 | 42 | ``` |
| 43 | +💡 **使用模式:Ask** |
46 | 44 |
|
47 | | -### 步驟 5:詢問改進建議 |
48 | | -``` |
49 | | -@workspace 這個購物車系統有什麼可以改進的地方?請從架構和效能角度分析 |
| 45 | +### 階段 2:Ghost Text 體驗 (2分鐘) |
| 46 | + |
| 47 | +#### 步驟 4:使用註解引導 Auto Complete |
| 48 | +1. 開啟 `js/utils.js` |
| 49 | +2. 在檔案最後加入詳細的 TODO 註解: |
| 50 | +```javascript |
| 51 | +// TODO: 加入一個計算折扣的函數 |
| 52 | +// 函數名稱: calculateDiscount |
| 53 | +// 參數: subtotal (小計金額) |
| 54 | +// 邏輯: 滿 1000 打 95 折,滿 2000 打 9 折 |
| 55 | +// 回傳: 折扣後的金額 |
50 | 56 | ``` |
| 57 | +3. 在註解下方開始輸入 `function calc` |
| 58 | +4. **暂停 1-2 秒**,觀察灰色的 Ghost Text 建議 |
| 59 | +5. 按 `Tab` 接受建議,繼續輸入下一行 |
| 60 | +6. Copilot 會根據註解自動完成整個函數 |
| 61 | + |
| 62 | +✅ **關鍵技巧**:詳細的註解 = 更精準的程式碼生成 |
| 63 | + |
| 64 | +### 階段 3:Inline Edit 實戰 (3分鐘) |
| 65 | + |
| 66 | +#### 步驟 5:初識 Inline Edit - 優化運費計算 |
| 67 | +1. 開啟 `js/utils.js` |
| 68 | +2. 找到 `calculateShipping` 函數(約第 10-16 行) |
| 69 | +3. **選取整個函數內容**(從 function 到結尾的 }) |
| 70 | +4. 按 `Ctrl+I` (或 `Cmd+I` on Mac) |
| 71 | +5. 輸入:`改成階梯式運費:500以下60元,500-1000收30元,1000以上免運` |
| 72 | +6. 按 Enter 送出 |
| 73 | +7. 檢視修改預覽,按 `Ctrl+Enter` 接受 |
| 74 | + |
| 75 | +#### 步驟 6:Inline Edit 實用修改 - 整合折扣 |
| 76 | +1. 在 `js/cart.js` 找到 `calculateTotal` 函數(約 137-146 行) |
| 77 | +2. **選取整個 calculateTotal 函數** |
| 78 | +3. 按 `Ctrl+I` |
| 79 | +4. 輸入:`整合剛剛寫的 calculateDiscount 函數,在運費計算前先計算折扣` |
| 80 | +5. 按 Enter,等待 AI 生成程式碼 |
| 81 | +6. 按 `Ctrl+Enter` 接受修改 |
| 82 | + |
| 83 | +#### 步驟 7:測試修改效果 |
| 84 | +1. 開啟 `index.html` 在瀏覽器中 |
| 85 | +2. 加入商品到購物車 |
| 86 | +3. 觀察: |
| 87 | + - 運費隨金額變化(步驟 5 的效果) |
| 88 | + - 滿額自動打折(步驟 6 的效果) |
51 | 89 |
|
52 | 90 | ## 💡 重點提示 |
53 | 91 |
|
54 | | -### @workspace 使用技巧: |
55 | | -1. **全域視角**:適合詢問整體架構問題 |
56 | | -2. **跨檔案分析**:能理解多個檔案之間的關係 |
57 | | -3. **程式碼搜尋**:快速找到特定功能的位置 |
58 | | -4. **最佳實踐**:可以詢問程式碼品質建議 |
| 92 | +### Ghost Text (Auto Complete) 技巧: |
| 93 | +- **詳細註解**:寫明函數名稱、參數、邏輯、回傳值 |
| 94 | +- **暂停等待**:輸入幾個字後停 1-2 秒 |
| 95 | +- **Tab 接受**:看到灰色建議後按 Tab |
| 96 | +- **逐行生成**:可以一行一行接受或修改 |
59 | 97 |
|
60 | | -### 常用 @workspace 提示詞: |
61 | | -- "@workspace 這個專案使用了哪些設計模式?" |
62 | | -- "@workspace 請找出所有處理使用者輸入的地方" |
63 | | -- "@workspace 哪些函數可能有效能問題?" |
64 | | -- "@workspace 這個專案的依賴關係是什麼?" |
| 98 | +### Inline Edit 快速記憶: |
| 99 | +- **選取程式碼 → Ctrl+I**:針對選取範圍修改 |
| 100 | +- **Ctrl+I 不選取**:AI 會根據游標位置猜測範圍 |
| 101 | +- **Enter**:送出指令 |
| 102 | +- **Ctrl+Enter**:接受修改 |
| 103 | +- **Esc**:取消修改 |
| 104 | + |
| 105 | +### Inline Edit vs Chat Edit: |
| 106 | +- **Inline Edit**:定點修改,快速直接 |
| 107 | +- **Chat Edit**:探索修改,需要 AI 定位 |
65 | 108 |
|
66 | 109 | ## 🎬 Demo 重點 |
67 | | -1. 強調 @ 符號的使用方式 |
68 | | -2. 展示 @workspace 如何理解多個檔案 |
69 | | -3. 示範如何追蹤函數呼叫鏈 |
70 | | -4. 展現 Copilot 對程式碼的深度理解 |
| 110 | +1. **@workspace 的專案理解能力** |
| 111 | +2. **Ghost Text 根據註解自動完成** |
| 112 | +3. **Inline Edit 的快速修改體驗** |
| 113 | +4. **實際運行展示修改效果** |
71 | 114 |
|
72 | 115 | ## ✅ 預期成果 |
73 | | -完成本場景後,您應該: |
74 | | -- 能夠使用 @workspace 分析整個專案 |
75 | | -- 理解如何詢問程式碼的架構問題 |
76 | | -- 掌握追蹤程式碼執行流程的技巧 |
77 | | -- 對購物車系統有完整的理解 |
78 | | - |
79 | | -## 🔍 延伸練習 |
80 | | -1. 使用 @workspace 找出所有的事件處理器 |
81 | | -2. 詢問如何新增優惠券功能 |
82 | | -3. 請 Copilot 產生這個系統的架構圖(使用 mermaid) |
83 | | -4. 找出潛在的安全性問題 |
| 116 | +- 掌握 @workspace 分析專案的能力 |
| 117 | +- 會使用註解引導 Ghost Text 生成程式碼 |
| 118 | +- 熟練使用 Inline Edit (Ctrl+I) 快速修改 |
| 119 | +- 了解 Ghost Text、Inline Edit、Chat Edit 的使用時機 |
| 120 | +- 能實際看到程式碼修改的效果 |
| 121 | + |
| 122 | +## 🔍 快速練習 |
| 123 | +1. 用 Inline Edit 修改其他函數 |
| 124 | +2. 試試選取不同範圍使用 Ctrl+I 的差異 |
| 125 | +3. 用 @workspace 找出可優化的地方 |
| 126 | + |
| 127 | +## 🎯 下一步 |
| 128 | +- 場景 3 將首次引入 Agent 模式(20%) |
| 129 | +- 體驗 Agent 與 Ask/Edit 的根本差異 |
0 commit comments