GitHub Copilot
實戰演練:Lab 01
現在,是時候親自體驗 Copilot 魔力的時候了!
Lab 01-A: 初探程式碼自動生成
目標: 體驗 Copilot 的程式碼自動生成能力
步驟:
下載範例專案
git clone https://github.com/isdaviddong/HOL_Copilot_First.git cd HOL_Copilot_First code .輸入計算蘋果價格的片段
//計算蘋果 double applePrice = 35; // 蘋果的價格 double appleDiscount = 0.1; // 蘋果的折扣 Console.WriteLine("蘋果折扣後價格是:" + applePrice * (1 - appleDiscount));自動產生其他水果的計算程式碼片段
- 嘗試按下 Tab 接受建議
- 使用 ESC 拒絕建議
- 按 Alt + \ 觸發新建議
- 使用 Ctrl + Enter 查看多個選項
挑戰:
- 能否讓 Copilot 生成至少 3 種不同水果的計算邏輯?
- 觀察 Copilot 是否保持命名慣例和計算模式的一致性
- 嘗試刪除第三行的折扣計算,接的回到第二行最後,按下 Enter ,看看 Copilot 建議出的程式碼,是否符合你的期待?
Lab 01-B: 初探程式碼重構
目標: 使用 Copilot 進行物件導向重構
步驟:
撰寫重構咒語 在程式碼中加入註解:
//建立一個計算折扣後價格的類別,具有水果名稱、單價、折扣這三個屬性,以及一個計算折扣後價格的方法檢視生成的類別
- 觀察類別的命名是否合理
- 檢查屬性的資料型別是否正確
- 確認方法的實作邏輯是否正確
重構主程式
- 使用 Inline Coding (CTRL+I) 修改原始主程式碼
- 將重複計算水果折扣的程式碼改為使用新建立的類別
- 觀察 Copilot 如何自動建議物件初始化語法
挑戰:
- 嘗試在註解中加入「並實作 IDisposable 介面」,看看 Copilot 如何回應
- 試著讓 Copilot 加入資料驗證(例如價格不能為負數)
- 能否讓 Copilot 將類別改為使用建構函數(Constructor)而非屬性初始化?
預期成果: 完成這個 Lab 後,你應該能夠:
- ✅ 理解 Copilot 如何從模式中學習
- ✅ 掌握基本的快捷鍵操作
- ✅ 會使用註解引導 Copilot 生成程式碼
- ✅ 能夠進行簡單的程式碼重構
進階思考:Copilot 的局限性
雖然 Copilot 強大,但它不是萬能的。了解它的局限性,能幫助你更有效地使用它。
1. 無法理解業務邏輯
Copilot 可以生成計算折扣的程式碼,但它不知道:
- 你的公司是否有特殊的折扣規則
- 是否需要考慮會員等級
- 是否有最低消費限制
解決方案: 在註解中明確描述業務規則:
//計算折扣價格,但如果折扣後價格低於成本(20元),則不給予折扣
public double CalculateDiscountedPrice()
{
double discountedPrice = Price * (1 - Discount);
const double cost = 20;
return discountedPrice < cost ? Price : discountedPrice;
}
2. 可能生成過時或不安全的程式碼
Copilot 的訓練資料來自開源程式碼,其中可能包含過時的做法或安全漏洞。
解決方案:
- ==總是==檢視生成的程式碼
- 使用程式碼分析工具(如 SonarQube)進行安全掃描
- 參考官方文件確認最佳實踐
3. 缺乏全局視野
Copilot 主要關注當前檔案和少數開啟的檔案,可能無法理解整個專案架構。
解決方案:
- 對於複雜的跨檔案重構,使用
@workspace命令(在後續章節會介紹) - 保持檔案結構清晰,讓 Copilot 更容易理解上下文
4. 需要人類的判斷
Copilot 提供建議,但最終決定權在你。它可能會:
- 過度工程化(Over-engineering)簡單問題
- 使用你不熟悉的設計模式
- 忽略專案的現有慣例
解決方案:
- 批判性思考每個建議
- 理解程式碼再接受,而非盲目複製
- 當不確定時,使用 Copilot Chat 詢問「為什麼這樣設計?」
小結:AI 時代的開發者新技能
GitHub Copilot 的出現,標誌著軟體開發進入新時代。但這不代表程式設計師會被取代,反而意味著我們需要學習新的技能:
傳統技能 vs. 新時代技能
| 傳統技能 | 新時代技能 |
|---|---|
| 記憶語法 | 描述意圖 |
| 手寫樣板程式碼 | 審查 AI 生成的程式碼 |
| Google 搜尋解決方案 | 引導 AI 生成解決方案 |
| 複製貼上 Stack Overflow | 與 AI 協作開發 |
開發者的價值在哪裡?
即使 AI 能生成程式碼,開發者仍然扮演關鍵角色:
- 問題定義 : AI 只能解決你描述清楚的問題
- 架構設計 : 整體系統設計仍需要人類的洞察力
- 品質把關 : 審查程式碼的正確性、安全性、效能
- 業務理解 : 將商業需求轉化為技術實作
- 創新思考 : AI 基於現有模式,創新突破仍需人類
下一步
在這一章中,我們學會了 Copilot 的基本使用——程式碼生成和重構。但這只是冰山一角。在接下來的章節中,我們將探索:
- 如何在雲端環境(CodeSpaces)使用 Copilot
- 進階的 Agent 模式和命令系統
- 如何建立完整的前端應用程式
- 與 Azure DevOps 的整合
- 自訂 Copilot 行為的進階技巧
記住:Copilot 是你的助手,不是主人。學會善用它,你會發現編程不再是無止盡的重複勞動,而是更專注於創造價值的創意工作。
準備好了嗎?讓我們開始 Lab 01 的實作,親身體驗 AI 配對程式設計師的魔力吧!
相關資源: