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+I 或 Cmd+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 會考慮:
- 當前檔案的全部內容
- 同時開啟的其他分頁
- 游標前後的程式碼
技巧:
- 開啟相關檔案:如果你在寫 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 使用習慣
- 不要盲目接受:每次接受建議前,快速掃描一遍,確認邏輯正確
- 利用 Tab 部分接受:按
Ctrl+Right只接受建議的一個詞,而不是整行 - 多個建議切換:按
Alt+]/Alt+[在多個建議之間切換 - 保留問題意識:Copilot 偶爾會生成看起來合理但實際上有 bug 的程式碼,安全相關程式碼務必手動審查
總結
Copilot 最大的價值不在於它能寫出完美的程式碼,而在於它能幫你快速進入開發狀態、消除重複性的輸入負擔,以及在你思考架構時提供實作參考。把它當作一個需要你引導的夥伴,而不是一個可以甩鍋的黑盒子,你就能從中獲得最大的價值。
分享這篇文章