創建有效的 GitHub Copilot 指令

已完成

提示是自然語言指示,可告訴 GitHub Copilot 您想要執行的動作。 提示可用來詢問問題、傳達要求或描述工作。

例如,下列提示代表問題、要求和工作描述。

Question: How do I create a button that submits a form?

Request: Add a button that opens a modal dialog. The button should be blue with rounded corners.

Task: Build a product page that displays a product title, product image, product description, and price. Product information should be fetched from the attached ProductsList.json file. The price should be formatted as currency. The page should also include a button to add the product to the cart.

提示的品質直接影響到 GitHub Copilot 回應的品質。

什麼是良好的提示?

建立高品質的提示對於從 GitHub Copilot 取得最大價值至關重要。 下列策略可協助您製作產生更精確、相關且實用的回應的提示。

從一般性開始,然後再逐漸具體化

撰寫 Copilot 提示時,請從目標或案例的廣泛描述開始,然後提供特定需求。 這種方法可提供 Copilot 必要的內容,同時確保解決您的詳細需求。

Example:

Write a function that tells me if a number is prime.

The function should take an integer and return true if the integer is prime.

The function should error if the input is not a positive integer.

提供具體範例

範例是將意圖傳達給 Copilot 的最有效方式之一。 您可以提供範例輸入數據、預期的輸出,甚至是範例實作,以引導 AI 的理解。

Example:

Write a function that finds all dates in a string and returns them in an array. Dates can be formatted like:

- 05/02/24
- 05/02/2024
- 5/2/24
- 5/2/2024
- 05-02-24
- 05-02-2024
- 5-2-24
- 5-2-2024

Example usage:
findDates("I have a dentist appointment on 11/14/2023 and book club on 12-1-23")

Expected return: ["11/14/2023", "12-1-23"]

將複雜工作分成更簡單的步驟

面對複雜或大型工作時,將其分解為較小的可管理元件。 這種方法會導致更好的結果,並讓您更輕鬆地偵錯和精簡個別片段。

範例:不要要求 Copilot 產生完整的文字搜尋謎題,而是將其細分:

  1. Write a function to generate a 10 by 10 grid of letters
  2. Write a function to find all words in a grid of letters, given a list of valid words
  3. Write a function that uses the previous functions to generate a 10 by 10 grid containing at least 10 words
  4. Update the previous function to print the grid and 10 random words from the grid

消除模棱兩可

請避免使用模糊的引用和可能以多種方式解釋的詞彙。 明確說明您指的是的內容,以及您想要科皮洛特做什麼。

不良範例

  • 「這是做什麼用的?」(不清楚「這」指的是什麼)。
  • 修復錯誤(未指定是哪個錯誤或如何修復)。

更好的範例

  • “createUser 函式的作用為何?
  • 「您最後一個回應中的程序代碼有何用途?
  • 「修正電子郵件輸入欄位中的驗證錯誤。」

連結庫考慮

  • 如果使用不常見的連結庫,請描述其用途。
  • 對於特定連結庫,請包含import語句,或指定您想要使用的連結庫。

提供相關內容

透過有效地管理開發環境,協助 Copilot 瞭解您的專案結構和意圖。

在您的 IDE 中

  • 開啟相關檔案並關閉不相關的檔案。
  • 請標示您希望 Copilot 參考的特定程式碼區段。
  • 使用像 Visual Studio Code 中的 @workspace 或 JetBrains IDE 中的 @project 這樣的聊天參與者。

在 Copilot Chat 中:

  • 參考特定檔案或程式代碼區塊。
  • 附加相關的檔或規格。
  • 使用清晰的檔案路徑和函式名稱。

逐一查看並精簡

不要指望在第一次嘗試就得到完美的結果。 當您參與反覆對話時,Copilot 效果最佳,並根據您收到的回應來精簡您的要求。

反覆專案的策略

  • 如果使用內嵌建議,請刪除並使用修改後的提示重試。
  • 在 Copilot Chat 中,參考先前的回應,並要求進行特定修改。
  • 藉由要求逐步改進,以構築部分解決方案。

維護相關的交談歷程記錄

Copilot Chat 會使用交談歷程記錄來了解內容,因此請策略性地管理此歷程記錄。

最佳做法:

  • 針對不同的工作或項目啟動新的線程。
  • 刪除可能會混淆未來回應的不相關或失敗要求。
  • 讓交談著重於相關功能。

遵循良好的編碼做法

您現有程式代碼基底的品質會影響 Copilot 產生適當建議的能力。 在您的程式代碼中維持高標準,以取得更好的 AI 協助。

程式代碼品質因素

  • 使用一致的程式代碼樣式和模式。
  • 選擇變數和函式的描述性名稱。
  • 新增有意義的批註來說明複雜的邏輯。
  • 將程式代碼結構化為模組化、範圍完善的元件。
  • 包含完整的單元測試。

Note

您可以要求 Copilot 藉由要求批注、重構建議,或將大型函式分成更小、更容易管理的片段,以協助改善程式碼品質。

以下是一些良好的提示:

  • 清楚:確切描述您想要的內容。
  • 特定:包括版面配置、行為或樣式的細節。
  • 內容相關:參考現有的程式代碼或結構。

反覆調整提示

如果 GitHub Copilot 的初始回應不符合您的預期,您可能需要在提示上反覆運算。 考慮下列策略:

  • 編輯提示以更具體化。
  • 請在聊天中新增內容以釐清您的目標或需求。
  • 使用 Copilot Chat 來詢問以先前回應為基礎的後續問題。

評估和回應 Copilot 的建議

了解如何評估 Copilot 的建議對於有效的 Vibe 編碼至關重要。 並不是每個建議都會完美無缺,而且知道何時接受、拒絕或修改回應會大幅改善您的開發體驗。

接受建議的時機

當 Copilot 的建議出現以下情況時,請接受它:

  • 符合您的需求:程式代碼會執行您要求的內容。
  • 遵循最佳做法:使用適當的模式、命名慣例和結構。
  • 結構良好:程式代碼可讀取、可維護且格式正確。
  • 包括適當的錯誤處理:解決邊緣情況和潛在的失敗問題。
  • 符合項目的風格:與現有的程式碼基礎模式和慣例一致。

要接受的好建議範例

提示: 「建立函式來驗證電子郵件位址」

Copilot 建議:

function validateEmail(email) {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (typeof email !== 'string') {
        throw new Error('Email must be a string');
    }
    return emailRegex.test(email.toLowerCase());
}

應該接受這項建議,因為它包含輸入驗證、錯誤處理,以及使用合理的 regex 模式。

拒絕建議的時機

如果發生以下情況,拒絕 Copilot 的建議:

  • 請勿解釋您的提示:程式代碼解決的是與要求不同的問題。
  • 包含安全性弱點:使用不安全的做法或公開敏感數據。
  • 過於複雜:以不必要的複雜度實作的簡單工作。
  • 使用已被取代的方法:依賴陳舊或過時的 API。
  • 缺少錯誤處理:請勿考慮潛在的失敗案例。
  • 違反程式代碼撰寫標準:請勿遵循小組的既定做法。

拒絕的建議範例

提示: 「建立安全密碼驗證函式」

建議不佳:

function validatePassword(password) {
    return password.length > 6;
}

這應該遭到拒絕,因為它對於安全性需求過於簡單,而且無法正確驗證密碼強度。

修改建議的時機

在下列情況下修改 Copilot 的建議:

  • 大部分正確但需要調整:核心邏輯是健全的,但詳細數據需要調整。
  • 需要其他功能:基本功能良好,但需要增強功能。
  • 有次要格式樣式問題:程式碼可以運作,但不符合您的格式設定。
  • 需要不同的變數名稱:邏輯正確,但可以改善命名。
  • 需要效能優化:目前功能正常,但可以提升效率。

修改建議的範例

Copilot 建議:

function calculateTotal(items) {
    let total = 0;
    for (let i = 0; i < items.length; i++) {
        total += items[i].price;
    }
    return total;
}

您的修改,以獲得好的可讀性和新式 JavaScript:

function calculateTotal(items) {
    return items.reduce((total, item) => total + item.price, 0);
}

改善建議的策略

當建議不太正確時,請嘗試下列方法:

精簡您的提示

  • 新增更具體的需求。
  • 包含預期的輸入/輸出範例。
  • 指定您使用的程式設計樣式或架構。

要求修改

  • 「讓上一個函式更健全,並增強錯誤處理能力。」
  • 「簡化您剛才撰寫的程序代碼。」
  • 「將 TypeScript 類型新增至上一個函式」。

以累加方式建置

  • 從基本版本開始,並要求增強功能。
  • 一次新增一個功能,而不是一次要求一切。
  • 在進行下一個增強功能之前,應先測試每次迭代。

Tip

修改建議時,請保留運作良好且需要變更的特定元件。 這有助於 Copilot 瞭解您的喜好設定,並提供更好的未來建議。

Summary

為 GitHub Copilot 建立有效的提示,對於最大限度地發揮其在 Vibe 編碼中的潛力至關重要。 從一般描述開始,提供具體範例、分解複雜的工作,以及維護清楚的溝通,您可以引導 Copilot 產生符合您需求的高品質程序代碼。 反覆調整提示並瞭解如何評估建議,可進一步增強您的開發體驗,讓您能有效利用 AI 協助,同時保持對程式撰寫流程的控制權。