本文內容為Will保哥 GitHub Copilot 協作開發實戰課程筆記[^1] ## 目錄 [2024.01.29 簡介GitHub Copilot](https://hackmd.io/@Eudicotz/BJVuG93i6) [2024.02.05 安裝和設定 GitHub Copilot](https://hackmd.io/@Eudicotz/rkVeQ5hip) [2024.02.05 GitHub Copilot實際操作](https://hackmd.io/@Eudicotz/HkIj793oT) [2024.02.16 GitHub Copilot advance usage其他妙用](https://hackmd.io/@Eudicotz/SyGvHkAsT) [2024.02.16 GitHub Copilot Chat](https://hackmd.io/@Eudicotz/BkfOVkCiT) ## 使用GitHub Copilot的兩種方式 ### CDD (Comment Driven Development) - 透過**註解**來開發 (註解導向的開發模式) - 最常用的方式,但非最佳做法 ### The Flow - 順著你的**開發流程**自動產生程式碼 ## CDD (Comment Driven Development) 1. 描述要做的目標 - 建立新檔案時,先寫好部份註解,讓AI知道想打造什麼功能 - 講人話 2. 靈活描述需求 - 同樣一句話在不同專案可能代表不同意思 - 適時修改註解可以讓AI更清楚意圖 3. 提供良好範例 - 如果需要處理資料,請給他一些範例,讓他知道如何處理資料 ### 透過註解進行Prompting(提示) - 好的提示應具備以下幾點: - 電腦只能做「**你告訴他們做的事情**」 - 必須非常**具體** - 他們更擅長一步一步**逐步接受命令** - 演算法只是一系列命令 - 沒有具體的提示,例如沒有給Model或是沒有給充足的步驟順序,GitHub Copilot可能會回應錯誤的程式碼 ## 實作 ### GitHub Copilot Chat 取代用註解寫Code 原本用註解寫Code時,如果不斷註解下去,文件是空白的,且無上下文參考,GitHub Copilot可能不斷連續的產出註解描述,但不產生Code。 `ctrl` + `i` 打開 Github Copilot Chat,把原本的註解複製到聊天視窗中,讓他根據提示來產生或修改Code。 #### Cache機制 如果送出後產生的內容不滿意,因GitHub Copilot Server有Cache(快取)的機制,完全一樣的問題重複發送,可能會傳回一模一樣的文字內容,因此如果需要換一份Code,請「換句話說」。 只要提供明顯的範例提示,可以讓他自行產生後續多筆資料。 #### 小秘訣 1. 聊天室可以打多行 `shift` + `enter`可以輸入多行文字,講解越詳盡,需求越明確,錯誤率越低。 #### 小秘訣 2. 聊天室可接續聊(短期記憶) 當Copilot Chat產生一段Code後,可以不關閉聊天室,把原本內文刪除後打第二句,此時可以讓他以現有產生的Code為基礎,進行修改。 #### 小秘訣 3. 產生多組建議供選擇   - 當GitHub Copilot產生一組建議時,`ctrl` + `enter`可以快速產生十組建議於右側頁面暫存,可以Accept Solution來接受答案 - 此時向GitHub Copilot Server發出請求時,是**以multi-thread發出請求**,因此10個建議產生的速度非常快 ### GitHub Copilot如何分析你的程式碼 - 提問時的主要資訊 - 當前的檔案 - 已開啟的分頁 - 上下文(Context)包含哪些 - 目前正在編輯的程式碼 - 目前鍵盤游標的前幾行與後幾行(黑箱) - 已開啟的程式碼檔案 - 程式碼結構分析並取出重要資訊 - 不只是註解,還有檔案名稱、類別名稱、函式名稱、參數名稱、...... - 參考的內容也可能被作為上下文傳送 - 最佳解當然是把檔案打開,並釘選 - 如果有使用參考,例如.NET文件的Class,結構也可能被傳過去 用英文的正確率高於中文,可以的話用英文與Copilot溝通遠勝過其先將中文翻譯成英文,提問完後再翻譯回來 ## Copilot如何成為優良的副駕駛 - 良好的類別、函式、參數、變數命名讓Copilot知道現狀與意圖 - 透過程式碼上下文自動判斷要寫的Code - 開啟需要參考的程式碼並依照撰寫習慣去寫程式 - 當有其他程式碼作為參考時,可能會參考檔案名稱及其他程式碼,依樣畫葫蘆去產生類似的內容 - 也因此,自身的程式碼品質會影響其類比產生的Code(請務必維護好自己的代碼品質) - 可以發揮創意 - IDE自有功能:如果用來產生Code,就不要用AI產生 - 例如:intellisense、重構、Code Snippet、Dockerfile等功能 - 因為AI有可能會是錯誤的,且可能不會更快 - 如果原生功能已有規範產生邏輯,其正確率必定高於AI [^1]:[GitHub-Copilot-協作開發實戰](https://www.accupass.com/event/2311170145205340711850)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up