檢視 GitHub Copilot 最佳實務

已完成

GitHub Copilot 的擴充功能幫助開發者更快且錯誤更少地撰寫程式碼Visual Studio Code。

不過,GitHub Copilot 是 AI 配對程式設計師,不是程式設計師。 要充分利用GitHub Copilot工具,你需要遵循最佳實務。

選擇適合工作的GitHub Copilot工具

雖然 GitHub Copilot 的程式碼補全功能與 GitHub Copilot 的聊天功能有些相似,但兩者在不同情況下使用效果最佳。

程式碼補全在其用於以下情況時能提供最大的價值:

  • 當您在撰寫程式碼片段、變數名稱和函式數時來完成它們。
  • 產生重複的程序代碼。
  • 使用自然語言從內嵌批注產生程序代碼。
  • 為測試驅動開發產生測試。

另外,GitHub Copilot 的聊天功能用於以下情形時,能帶來最大價值:

  • 回答自然語言程式代碼的相關問題。
  • 產生大量的程式代碼區段,然後反覆運算該程式代碼以符合您的需求。
  • 使用關鍵詞和技能完成特定工作。 GitHub Copilot Chat 在提示中運用內建關鍵字(以及設計來提供重要背景的技能),快速完成常見任務。 不同 GitHub Copilot 聊天平台提供不同類型的關鍵字和技能。
  • 以特定角色身分完成工作。 舉例來說,你可以告訴 GitHub Copilot Chat 他是一位非常重視程式碼品質、可讀性和效率的資深 C++ 開發者。 建立角色設定後,你可以請GitHub Copilot審查你的程式碼。

充分利用GitHub Copilot 即時建議

GitHub Copilot擴充功能會自動提供建議,幫助你更有效率地寫程式。 GitHub Copilot在遵循某些行動和行為時,會提供更好的建議。 您可能已經遵循其中一些動作和行為,因為它們也協助您和您的同事了解程式碼。

提供 GitHub Copilot 的上下文資訊

GitHub Copilot 在有足夠的上下文來了解你正在做什麼以及需要什麼幫助時,效果最好。 就像你在向同事求助時提供相關背景一樣,你也需要給GitHub Copilot提供相關背景。

開啟檔案

對於程式碼補全,GitHub Copilot會查看編輯器中開啟的檔案,建立上下文並提出適當的建議。 在使用 Visual Studio Code GitHub Copilot 時開啟相關檔案,有助於定義上下文,GitHub Copilot也能看到專案的整體大局。

最上層註解

就像你會給同事簡短且高層次的自我介紹一樣,程式碼檔案中的頂層註解可以幫助GitHub Copilot理解你所建立程式碼的整體脈絡。

適當的包含和參考

您最好手動設定工作所需的包含或模組參考。 GitHub Copilot可以提出建議,但你最清楚需要包含哪些相依性。 這也能讓GitHub Copilot了解你想用哪些框架、函式庫及其版本來撰寫建議。

有意義的函式名稱

就像一個叫 fetchData() 的方法對同事(或你)幾個月後不會有太大意義一樣,fetchData() 也不會幫助GitHub Copilot理解你的程式碼。 使用有意義的函式名稱有助於GitHub Copilot產生符合你需求的建議。

具體且範圍恰到好處的函式註解

函式名稱只能描述到一定程度,不可過長。 功能註解可以幫助補充GitHub Copilot可能需要知道的細節。

帶有範例程式碼的 Prime GitHub Copilot

讓 GitHub Copilot 進入正確頁面的一個小技巧,是將想要的程式碼範例複製並貼到開啟的編輯器索引標籤中。這些範例應該代表您希望 GitHub Copilot 模擬的程式碼。 提供範例可以幫助GitHub Copilot產生符合你想模仿的語言和任務的建議。 當GitHub Copilot幫你建立符合目標的程式碼後,你可以刪除範例程式碼。 這種方法在需要「訓練」GitHub Copilot時特別有幫助。 舉例來說,假設 GitHub Copilot 預設建議實作舊版本程式庫的程式碼片段。 您可以將程式碼插入使用最新版程式庫的專案。 這有助於GitHub Copilot開始建議使用最新版本函式庫的程式碼片段。 GitHub Copilot學會使用新函式庫版本後,就可以刪除範例程式碼。

保持一致,維持高品質

GitHub Copilot會依附你的程式碼,產生符合現有模式的建議,所以「垃圾進,垃圾出」這句諺語就適用。

隨時維持高品質可能需要紀律。 特別是當您快速且寬鬆地撰寫程式碼以讓某個功能可以運作時。 你可能會想在「駭客」模式下關閉 GitHub Copilot 的自動補全功能。 您可以從 GitHub Copilot 狀態功能表 (可從 Visual Studio Code 的狀態欄進入) 暫時停用完成。

充分發揮GitHub Copilot對話的效用

當你使用 GitHub Copilot 的聊天功能時,有幾件事可以做來優化你的體驗。

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

在撰寫 GitHub Copilot 的提示時,首先要為 GitHub Copilot 提供一個目標或情境的大致描述。 然後列出任何具體的需求。 考慮以下的提示:

  1. 撰寫一個函式來告訴我某一個數字是否是質數。
  2. 該函式應該接受一個整數,如果該整數是質數則傳回 true。
  3. 如果輸入不是正整數,函式應該會擲回錯誤。

舉例說明

用例子幫助GitHub Copilot了解你想要什麼。 您可以提供範例輸入資料、範例輸出和範例實作。

將複雜的工作分解成更簡單的工作

如果你想GitHub Copilot完成一個複雜或大型的任務,就把它拆成多個簡單、較小的任務。 例如,與其要求GitHub Copilot生成單字搜尋謎題,不如將過程拆分成較小的任務,並請GitHub Copilot逐一完成:

  1. 撰寫一個函式來產生 10 x 10 的字母方格。
  2. 撰寫一個函式以在字母方格中尋找所有單字 (給定一個有效單字的清單)。
  3. 撰寫一個函式,使用前面的函式產生一個 10 x 10 的字母方格,其中至少包含 10 個單字。
  4. 更新前面的函式以列印字母方格和方格中的 10 個隨機單字。

避免語意模糊

避免語意模糊的字詞。 例如,不要問「這是做什麼的?」當「這個」可能是當前檔案、最後 GitHub Copilot 回應,或是特定的程式碼區塊。 不要使用模稜兩可的字詞,而要具體:createUser 函式的作用是什麼?

註明相關的程式碼

如果你在 IDE 裡使用 GitHub Copilot Chat,打開檔案或選取你想GitHub Copilot參考的程式碼。 在提示中使用聊天參與者、斜線命令和聊天變數來定義內容。 例如,指定 GitHub Copilot 聊天應該引用哪些檔案。

使用聊天參與者、Slash 命令和聊天變數

聊天參與者的設計目的是收集關於程式碼基底或特定網域或技術的額外內容。 當你指定合適的參與者時,GitHub Copilot Chat 可以找到並提供更好的資訊,傳送給GitHub Copilot後端。 例如,當你詢問關於你開放專案的問題時,可以使用 @workspace,或在詢問Visual Studio Code功能和 API 時使用 @vscode

斜線指令幫助GitHub Copilot聊天理解你提問時的意圖。 您是要了解程式碼基底 ()、想要協助修正問題 (),還是要建立測試案例 ()? 透過讓 GitHub Copilot Chat 知道你想做什麼,它就能調整回覆你的任務,並提供有用的指令、設定和程式碼片段。

聊天參與者,例如 或 ,可以參與提供特定網域內容的聊天變數。 您可以使用 符號,在聊天提示參考聊天變數。 您可以使用聊天變數,讓提示的內容更具體。

例如, 聊天變數可讓您在聊天提示參考工作區的特定檔案。 這有助於讓 GitHub Copilot Chat 的回答更符合你的程式碼,因為提供了你正在處理的檔案的背景資訊。 您可以詢問「」或「」這類問題。 使用 #file 變數可以幫助你從GitHub Copilot獲得更有針對性和準確的回應。

實驗和逐一查看

如果您沒有得到想要的結果,請反覆查看您的提示並重試。 在您的下一個要求中參考先前的回應。 您也可以刪除先前的回應並重新開始。

讓歷程記錄保持相關

GitHub Copilot 聊天會利用聊天紀錄來了解你的請求背景。 為了確保GitHub Copilot使用相關的聊天紀錄:

  • 使用執行緒來為新工作啟動新的交談。
  • 刪除不再相關或未為您提供所需結果的要求。

遵循良好的編碼做法

如果你向GitHub Copilot請教時沒有得到想要的回應,請確保你現有的程式碼遵循最佳實務且易於閱讀。 例如:

  • 使用一致的程式碼樣式和模式。
  • 針對變數和函式使用描述性名稱。
  • 為程式碼加上註解。
  • 將您的程式碼建構成模組化且有範圍的元件。
  • 包括單元測試。

總結

GitHub Copilot 是一個強大的工具,能幫助你更快且錯誤更少地撰寫程式碼。 然而,要充分利用GitHub Copilot,你必須遵循最佳實務。 透過選擇合適的GitHub Copilot工具、提供背景資訊並遵循良好的程式設計習慣,你能優化與GitHub Copilot的體驗。