iT邦幫忙

2024 iThome 鐵人賽

DAY 21
0

前言

我們在如何在 Visual Studio Code 內設定與使用 GitHub Copilot 這篇文章中,曾以簡單範例說明 GitHub Copilot 自動建議與完成功能。在本篇文章,我們將詳細說明此功能與其使用技巧,其中包含自動完成建議、透過註解產生程式碼與檢視更多建議等基本功能,還有使用上一些經驗分享與官方最佳實踐,提供有興趣的使用者參考。

 
 
 

自動完成建議

自動完成建議是一種依據使用者輸入內容、命名規則與程式碼前後文方式產生程式碼建議,這意味著寫 ”充分表現意圖”的程式碼是一件很重要的事情(這個與 Clean Code 中所提到寫 “人看得懂的程式碼” 有異曲同工之妙)。 倘若你的命名原則或程式碼前後文與想呈現的意圖完全不相關,容易造成不合理的程式碼建議產生。其主要原因為透過 0 樣本方式 (即 GitHub 上擁有基礎知識) 且沒有額外資訊輔助下,GitHub Copilot 無法給予精準的建議。

反之,當使用者的命名原則越能表現意圖且隨著時間增加程式碼 (前後文、多樣本方式) ,GitHub Copilot 提供的建議會越來越準確,此時開發者接受的建議逐漸增多,會明顯感受開發過程越來越流暢,進而提升生產力與其信心。接下來,我們會以官方教學案例進行說明,讓讀者對於如何使用自動完成建議有完整的了解。

我們以新增一個整數 List 內加入質數方法作為範例,在完全沒有前後文參考下,此時方法命名相當重要。輸入方法名稱 addPrimeNumbersInNumericList 後,GitHub Copilot 即提供完整的方法內容。此時您可以

  1. 按下 Tab 鍵接受全部建議
  2. 按下 Esc 鍵拒絕接受建議
  3. 使用 ctrl + 方向鍵進行逐步接受建議
  4. 如果有多個建議,你可以透過 Alt + [ 與 Alt + ] 快速鍵來選擇建議
    https://ithelp.ithome.com.tw/upload/images/20241005/20091494dOLag8YzxW.png

眼尖的讀者應該會發現,GitHub Copilot 程式碼建議中有一個判斷植樹方法尚未定義,這會造成語法錯誤而無法建置程式。您可以繼續換行,GitHub Copilot 會發現此問題並提供 isPrime 方法建議。

眼尖的讀者會發現,我們並沒有透過 Chat 或給予其他資訊請 copilot 給我們建議。它透過既有的程式碼發現使用者缺少 isPrime 方法並自動提供建議。
https://ithelp.ithome.com.tw/upload/images/20241005/20091494XUGCo2CwkE.png

此時有多個建議,您可以將滑鼠移至此方法,點選浮出來的左右按鈕切換建議;或者是如前面提到的,透過 Alt + [ 與 Alt + ] 快速鍵來選擇建議。
https://ithelp.ithome.com.tw/upload/images/20241005/20091494ZQiYbFivrK.png

 
 
 

檢視更多建議

如果您想要檢視更多建議,你可以透過自動完成面板檢視更多建議。在建議出現的時候使用快捷鍵 Ctrl + Enter,會在自動完成面板上面顯示所以建議。
https://ithelp.ithome.com.tw/upload/images/20241005/20091494EOxIas9ub8.png

確認要使用哪個建議後,點選 accept suggestion 按鈕即可加入建議。
https://ithelp.ithome.com.tw/upload/images/20241005/20091494kx1khLwYVZ.png

 
 
 

透過註解產生程式碼建議

除了既有程式碼前後文可以作為參考依據,當使用者輸入註解時也會作為前後文,讓 GitHub Copilot 參考。個人早期進行開發工作時,經常會將需求或規格先以註解方式撰寫的習慣,以確保程式轉寫過程中被打斷或恍神導致越寫越偏,在完成程式後視情況保留註解當作參考。但在閱讀完 Clean Code 這本書並加上第二份工作經過主管的訓練,逐漸養成寫可閱讀的程式習慣,自然而然越來越少寫註解。此功能是否能協助能否協助開發人員可能視情況而定,但有興趣的朋友可以試試看。

在既有的範例程式中輸入註解 ,會發現 Copilot 也會給予註解建議

// Create a

https://ithelp.ithome.com.tw/upload/images/20241005/20091494TjzeAEIbny.png

當你輸入註解後,換到下一行,會發現 Copilot 已經了解意圖,開始產生相對應的程式碼建議
https://ithelp.ithome.com.tw/upload/images/20241005/20091494ZJyHgN3Nwh.png

https://ithelp.ithome.com.tw/upload/images/20241005/20091494razzLkd9WZ.png

https://ithelp.ithome.com.tw/upload/images/20241005/200914945mSW1u07bl.png

 
 
 

後記

閱讀完這篇文章,讀者應該體會命名與程式前後文對 GitHub Copilot 的重要性。理所當然,隨著使用經驗越來越多,可能會發現過多的前後文反而建議不符合預期,或太多造成 Copilot 造成異常,而需要重開
情況發生。在下一篇文章,我們將對於 GitHub Copilot Chat 功能做基本的介紹。


上一篇
GitHub Copilot - 提示工程 (Prompt Engineering)
下一篇
GitHub Copilot Chat - 基礎說明
系列文
現代化應用程式開發與維運 - GitHub Codespace 與 GitHub Copilot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言