GitHub Copilot 完整教學

Part 11:實戰應用 - 程式碼重構

用 Copilot 優化和改善程式碼結構

程式碼優化 可讀性提升 維護性改善

🎯 本單元學習目標

完成這個單元後,你將能夠:

1. Chat 對話重構

透過 Copilot Chat 請求程式碼重構

2. /fix 指令優化

使用 /fix 快速改善程式碼品質

3. 右鍵選單整合

透過右鍵選單快速存取 Copilot 功能

4. 理解重構建議

看懂 Copilot 的重構說明與原因

核心觀念:重構是「改善程式碼結構」而「不改變功能」的過程!

🔧 什麼是程式碼重構?

重構(Refactoring)
改善程式碼的內部結構,但不改變其外部行為

✅ 重構是

  • 讓程式碼更易讀
  • 讓程式碼更好維護
  • 消除重複的程式碼
  • 簡化複雜的邏輯

❌ 重構不是

  • 新增功能
  • 修正 Bug
  • 改變程式行為
  • 效能優化(通常)
重要:重構前後,程式的「輸入」和「輸出」應該完全相同!

❓ 為什麼需要重構?

📖 提高可讀性

讓其他人(和未來的自己)
更容易理解程式碼

🔧 改善維護性

需要修改時
能更快找到正確位置

🐛 減少 Bug

簡潔的程式碼
更不容易出錯

🚀 便於擴展

結構良好的程式碼
更容易新增功能

程式碼異味(Code Smell):重複程式碼、過長函式、深層巢狀、魔術數字...這些都是需要重構的信號!

💬 方法一:Chat 對話重構

操作步驟

  1. 在編輯器中選取要重構的程式碼
  2. 開啟 Copilot Chat(Ctrl + Alt + I
  3. 輸入重構請求
  4. 按 Enter 送出
請幫我重構這段程式碼,讓它更簡潔易讀
Chat 對話重構

選取程式碼後,在 Chat 中輸入重構請求

📋 Copilot 重構結果

重構結果展示

Copilot 回應重構後的程式碼

Copilot 會提供:
  • 重構後的程式碼
  • 改善說明(為什麼這樣改)
  • 可直接複製或插入的程式碼區塊

🔧 方法二:使用 /fix 改善程式碼

操作步驟

  1. 選取要改善的程式碼
  2. 在 Chat 中輸入 /fix
  3. 按 Enter 送出
使用 /fix

使用 /fix 指令改善程式碼

/fix 的用途:不只修 Bug,也能改善程式碼品質、優化寫法!

🖱️ 方法三:右鍵選單整合

右鍵選單

透過右鍵選單存取 Copilot 功能

新版 VS Code 注意事項:
新版 Copilot 已整合至 VS Code 右鍵選單,可透過以下方式重構:
  • 「將選取程式碼新增至聊天」 - 送到 Chat 進行重構
  • 「開啟內嵌聊天」(Ctrl + I) - 直接在編輯器中對話
  • 「重構…」(Ctrl + Shift + R) - VS Code 重構功能

📚 常見重構情境

1. 抽取函式

將重複的程式碼
抽取成獨立函式
# 請將重複的邏輯抽成函式

2. 簡化條件

簡化複雜的 if-else
減少巢狀層級
# 請簡化這段條件判斷

3. 移除重複

消除 copy-paste 的程式碼
遵循 DRY 原則
# 請移除重複的程式碼

4. 重新命名

改善變數和函式命名
讓意圖更清楚
# 請改善變數命名

提示語範例:「請幫我重構這段程式碼,消除重複並提高可讀性」

🔄 重構前 vs 重構後

重構前後比較

對比重構前後的程式碼差異

❌ 重構前

  • 程式碼冗長
  • 邏輯不清楚
  • 有重複片段
  • 難以維護

✅ 重構後

  • 程式碼簡潔
  • 邏輯清晰
  • 消除重複
  • 易於維護

💡 Copilot 重構建議說明

重構建議說明

Copilot 說明為什麼這樣重構比較好

好的提問方式: 請重構這段程式碼,並解釋為什麼這樣改比較好
Copilot 會說明:可讀性、效能、維護性等改善原因

⚠️ 重構注意事項

1. 保持測試

重構前確保有測試
重構後執行測試
確認功能沒有改變

2. 小步前進

一次只改一小部分
不要一次大改
方便找出問題

3. 版本控制

重構前先 commit
有問題可以回復
保持程式碼安全

4. 檢查結果

Copilot 建議要檢查
不是照單全收
確認符合需求

重要提醒:重構後一定要測試!確保程式行為沒有改變。

🏋️ 實作練習

練習目標:使用 Copilot 重構程式碼並理解改善原因

練習步驟

  1. 開啟之前的練習檔案(practice9.py 或 practice10.py)
  2. 找一段「看起來可以改善」的程式碼
  3. 使用 Chat 對話方式請求重構
  4. 使用 /fix 指令改善同一段程式碼
  5. 比較兩種方式的結果差異
  6. 請 Copilot 解釋為什麼這樣改比較好
進階挑戰:
  • 嘗試重構一個有巢狀 if 的函式
  • 嘗試消除重複的程式碼
  • 重構後執行測試,確認功能正常

📝 隨堂測驗

問題 1:程式碼重構的目的是?

A. 新增功能
B. 改善程式碼結構而不改變行為
C. 修正程式的 Bug
D. 提高程式執行速度

問題 2:在 Copilot Chat 中,哪個指令可以改善程式碼?

A. /refactor
B. /fix
C. /improve
D. /optimize

問題 3:重構前應該先做什麼?

A. 刪除所有註解
B. 確保有測試並使用版本控制
C. 備份整個專案
D. 先把程式碼全部重寫

✅ 測驗解答

問題 1 答案:B

重構的目的是「改善程式碼結構而不改變行為」。重構不是新增功能、不是修 Bug、也不一定是優化效能。重構後程式的輸入輸出應該完全相同。

問題 2 答案:B

/fix 是 Copilot Chat 中用來改善程式碼的指令。它不只能修 Bug,也能優化程式碼結構和寫法。注意:沒有 /refactor、/improve、/optimize 這些指令。

問題 3 答案:B

重構前應該確保有測試(重構後可以驗證功能沒變)並使用版本控制(有問題可以回復)。這是安全重構的基本原則。

🎉 Part 11 重點回顧

什麼是重構

改善程式碼結構
不改變外部行為

三種重構方式

1. Chat 對話請求
2. /fix 指令
3. 右鍵選單整合

常見重構情境

抽取函式、簡化條件
移除重複、改善命名

重要原則

保持測試、小步前進
版本控制、檢查結果

核心觀念

「好的程式碼是重構出來的,不是一次寫對的」

下一單元預告

Part 12:實戰應用 - 程式碼除錯
用 Copilot 快速找出並修復 Bug!