作者:黃鴻鈞 / 臺灣大學計算機及資訊網路中心程式設計組行政專員
自從ChatGPT問世以來,很多人在期待AI取代程式設計師來替我們寫程式,也有人展示如何使用GPT寫程式並運行,GitHub Copilot就是實作此目標的產品之一,其優秀的協同工作獲得了廣大程式設計師的好評。
前言
GitHub Copilot在我們撰寫程式碼時提供即時的建議,也能主動詢問其如何編寫程式碼,或者提供程式碼重構的建議。當程式編譯或執行出現錯誤時,它還能協助我們進行除錯。具體而言它是一個編輯器擴充功能,可整合進包括 Neovim、JetBrains Rider、VS Code及Visual Studio 2022等多種編輯器中。本文將以Visual Studio 2022為例,介紹GitHub Copilot如何在程式設計過程中提供協助。
- 註冊GitHub Copilot
請注意,GitHub Copilot是一項付費服務。新用戶提供信用卡資料後,可享有一個月的免費試用期。學生或教師身份者,可以通過GitHub教育計畫(https://education.github.com/benefits) 申請免費使用。我們這裡不再贅述註冊過程,請自行準備一個GitHub帳戶並開通GitHub Copilot服務 (https://github.com/)。
- 以Visual Studio 2022加入GitHub Copilot
開啟Visual Studio 2022,從上方工具列依序選擇【延伸模組】、【管理延伸模組】,在延伸模組列表中找到「GitHub Copilot Completions」並進行安裝。
安裝完成後,將準備好的GitHub Copilot帳戶加入 Visual Studio 2022。依序點選【說明】、【註冊 Visual Studio】、【新增】、【GitHub 帳戶】,登入GitHub帳戶完成整個設定流程。
- GitHub Copilot自動產生建議
首先,我們建立一個名為Student的類別。在大括號{}內按下[Enter]並稍等約一秒鐘,GitHub Copilot將會顯示建議的程式碼。按下[Tab]即可將建議的程式碼加入到你的程式中。GitHub Copilot會根據其資料庫以及你的專案內容來提出建議。如果有你不需要的成員變數,例如Height和Weight,我們可以選擇將這些成員從類別中刪除。
在我們的Student類別中添加更多成員時,可以利用GitHub Copilot的功能來加速開發。當你輸入public string之後,GitHub Copilot會根據Student這個類別名稱推薦常見的成員名稱,例如 Address。按下[Enter]和[Tab]後,Copilot會繼續提供其他可能的成員建議。這種方式不僅節省了編碼時間,也有助於維護類別的結構完整性。
- 與GitHub Copilot Chat對話
除了在編程中自動提供建議,GitHub Copilot也允許使用者主動提出程式碼需求。首先,按下[Alt] + [/]開啟GitHub Copilot Chat對話框。在這個對話框中,你可以直接輸入具體的程式碼需求,例如「再建立兩個 student」。Copilot將根據你的指令生成相應的程式碼,這是一個快速且直接的方式來擴充或修改你的程式碼。
當你從GitHub Copilot獲得程式碼建議並顯示在畫面右側時,按下[接受]引入建議的程式碼到你的專案中。
但這些地址並不是台灣地址,你可以再進行調整,按下[Alt] + [/]開啟GitHub Copilot Chat對話框,在對話框中輸入「將三名學生改成台灣地址」,GitHub Copilot將更新地址以符合台灣的實際情況。
- 透過GitHub Copilot重構程式碼
在編程中,為了避免冗餘的條件判斷,我們可以利用GitHub Copilot重構程式碼來提高程式的效率與可讀性。首先,使用滑鼠左鍵拖曳選取你想檢查或重構的程式碼區塊。接著,按下[Alt] + [/]開啟GitHub Copilot Chat對話框,並輸入「重構這段程式碼」。GitHub Copilot將根據你的指示分析選取的程式碼,並提供一個或多個重構的建議方案。這些建議可能包括簡化邏輯、提高程式碼的模組化、或是提出更有效率的實作方法。你可以審視這些建議,選擇最適合你需求的方案來實施,從而優化你的程式碼結構。
若student.StudentID > 0,則student.StudentID > 1一定成立,透過GitHub Copilot重構後,它會建議移除內層多餘的 if 語句。這樣的操作不僅讓程式碼更為精簡,也使得程式易於理解和維護。
- 更多GitHub Copilot使用技巧
得益於當今豐富的網路資源,我們可以輕鬆獲得有關 GitHub Copilot 的使用技巧和知識。以下是一些官方提供的線上資源:
- https://docs.github.com/zh/copilot
- https://learn.microsoft.com/en-us/training/modules/introduction-to-github-copilot/
- https://www.youtube.com/playlist?list=PLj6YeMhvp2S5_hvBl2SE-7YCHYlLQ0bPt
- https://www.youtube.com/playlist?list=PL0lo9MOBetEHEHi9h0k_lPn0XZdEeYZDS
結語
GitHub Copilot受到眾多程式設計師的喜愛,原因可以簡單概括為其對不同經驗層次的程式設計師所帶來的獨特好處。對於經驗豐富的程式設計師而言,GitHub Copilot能處理一些繁瑣的編程任務,讓他們能將注意力集中在系統架構設計和邏輯編排上,從而有效提升編程效率,這讓他們有更多時間思考和實現更高層次的設計思路。對於經驗稍淺的程式設計師來說,GitHub Copilot則像是一位經驗豐富的導師,不僅引導他們如何撰寫更成熟的程式碼,還教授如何使程式碼更易於閱讀、維護和精簡。這種指導有助於新手逐步學習和掌握良好的編程實踐。對非程式設計師而言,雖然全自動編程的夢想可能仍然遙不可及,但對於程式設計師而言,GitHub Copilot的出現無疑是一個巨大的助力,是當前技術環境下的一個重要創新。