跳至主要內容

GitHub Copilot 效率提升技巧:讓 AI 真正幫到你

GitHub Copilot 效率提升技巧:讓 AI 真正幫到你

GitHub Copilot 已經是很多工程師的日常工具,但使用方式的差異,會讓它從「偶爾有用的自動補全」變成「真正的生產力倍增器」。這篇文章不是介紹 Copilot 是什麼,而是分享一些能讓你更有效率使用它的具體技巧。

寫好註解,讓 Copilot 理解你的意圖

Copilot 的上下文理解依賴你的程式碼和註解。越清晰的意圖描述,越能得到準確的建議。

// ❌ 模糊的請求
// 格式化日期

// ✅ 清晰的請求
// 將 Date 物件格式化為 'YYYY-MM-DD HH:mm' 格式,使用台灣時區(Asia/Taipei)
function formatDate(date: Date): string {
  // Copilot 在這裡會給出更準確的實作
}
# ❌ 過於簡短
# 計算平均值

# ✅ 包含邊界條件
# 計算數列的加權平均值,空列表回傳 0,忽略 None 值
# weights 和 values 長度必須相同,否則拋出 ValueError
def weighted_average(values: list, weights: list) -> float:
    # Copilot 會考慮到你提到的邊界條件

使用範例驅動的提示

給 Copilot 看輸入輸出範例,能大幅提升建議的準確度:

// 解析使用者輸入的時間字串
// 範例:
//   parseTimeInput('1h30m')  → 90(分鐘)
//   parseTimeInput('2h')     → 120
//   parseTimeInput('45m')    → 45
//   parseTimeInput('1.5h')   → 90
//   parseTimeInput('invalid') → null
function parseTimeInput(input) {
  // Copilot 現在清楚知道預期行為
}

Copilot Chat:比補全更強大

Copilot Chat(在 VS Code 中按 Ctrl+Shift+ICmd+Shift+I)允許你用自然語言對話。

解釋程式碼

選取一段程式碼,問:

/explain 這段程式碼在做什麼?有什麼潛在問題?

重構建議

/explain 如何重構這個函式讓它更易讀?請保留現有的功能

生成測試

/tests 為這個函式生成完整的單元測試,包含邊界情況

修復問題

/fix 這個函式有記憶體洩漏的問題,幫我找出並修復

利用 Copilot 加速重複性工作

快速生成型別定義

// 從 JSON 資料生成 TypeScript 介面
// 輸入資料如下:
// {
//   "id": "550e8400-e29b-41d4-a716-446655440000",
//   "user": { "name": "Alice", "email": "alice@example.com", "age": 30 },
//   "items": [{ "productId": "p1", "quantity": 2, "price": 150.0 }],
//   "total": 300.0,
//   "status": "pending",
//   "createdAt": "2026-02-17T10:00:00Z"
// }
// 請生成對應的 TypeScript 介面定義:
interface Order {
  // Copilot 會自動補全整個介面
}

批次生成相似程式碼

// 已有的 getter
getUserById(id: string): Promise<User>
getPostById(id: string): Promise<Post>

// 繼續寫其他類似的 getter,Copilot 會理解模式
getCommentById  // 按 Tab 即可
getTagById      // 再按 Tab
getCategoryById // 繼續...

生成測試資料

// 生成 10 筆假使用者資料,用於測試
// 名字使用中文,email 格式為 {拼音}@example.com
const mockUsers = [
  // Copilot 會生成符合格式的測試資料
]

Copilot 的語境管理

Copilot 會考慮:

  1. 當前檔案的全部內容
  2. 同時開啟的其他分頁
  3. 游標前後的程式碼

技巧:

  • 開啟相關檔案:如果你在寫 API 路由,同時開啟型別定義檔和資料庫 schema,Copilot 能提供更一致的建議
  • 先寫函式簽名:寫好型別標注的函式簽名,Copilot 補全實作時更準確
  • 維持好的程式碼風格:Copilot 會模仿你既有的命名慣例和風格

有效的 inline 提示技巧

// 技巧 1:用 TODO 引導
// TODO: 實作使用二分搜尋的版本
function findItem(arr: number[], target: number): number {
  // Copilot 通常會給出正確的二分搜尋實作
}

// 技巧 2:先寫測試案例,讓 Copilot 實作
describe('validateEmail', () => {
  it('should accept valid emails', () => {
    expect(validateEmail('user@example.com')).toBe(true)
    expect(validateEmail('user.name+tag@example.co.uk')).toBe(true)
  })
  it('should reject invalid emails', () => {
    expect(validateEmail('not-an-email')).toBe(false)
    expect(validateEmail('@example.com')).toBe(false)
  })
})

// 現在讓 Copilot 實作 validateEmail 函式:
function validateEmail(email: string): boolean {
  // Copilot 知道預期行為,能提供符合測試的實作
}

哪些情況 Copilot 最有用

適合使用 Copilot 的場景:

  • 樣板程式碼(CRUD、表單驗證、型別定義)
  • 正規表達式
  • 算法實作(排序、搜尋)
  • 測試案例生成
  • 重複性的映射和轉換邏輯
  • 文件字串(JSDoc、docstring)

需要謹慎驗證的場景:

  • 安全相關的程式碼(加密、認證)
  • 複雜的業務邏輯
  • 效能關鍵的程式碼路徑
  • 與特定版本 API 相關的程式碼

讓 Copilot 解釋第一次看到的程式碼

接手舊有程式碼時:

選取一段複雜的程式碼 → Copilot Chat → 
"請解釋這段程式碼的功能,並指出任何潛在的問題或改進點"
"這個函式的時間複雜度是多少?有更好的實作方式嗎?"

Copilot CLI

# 安裝
npm install -g @githubnext/github-copilot-cli
github-copilot-cli auth

# 使用 ?? 解釋指令
?? 如何找出所有超過 30 天未修改的 git 分支

# 使用 git? 詢問 git 操作
git? 如何撤銷最後 3 個 commit 但保留改動

# 使用 gh? 詢問 GitHub CLI 操作
gh? 如何列出所有開啟的 PR 並按作者分組

建立個人的 Copilot 使用習慣

  1. 不要盲目接受:每次接受建議前,快速掃描一遍,確認邏輯正確
  2. 利用 Tab 部分接受:按 Ctrl+Right 只接受建議的一個詞,而不是整行
  3. 多個建議切換:按 Alt+] / Alt+[ 在多個建議之間切換
  4. 保留問題意識:Copilot 偶爾會生成看起來合理但實際上有 bug 的程式碼,安全相關程式碼務必手動審查

總結

Copilot 最大的價值不在於它能寫出完美的程式碼,而在於它能幫你快速進入開發狀態消除重複性的輸入負擔,以及在你思考架構時提供實作參考。把它當作一個需要你引導的夥伴,而不是一個可以甩鍋的黑盒子,你就能從中獲得最大的價值。

分享這篇文章