使用GitHub Copilot聊天模式重構程式碼

已完成

GitHub Copilot 可以用來重構你的程式碼庫。 你可以利用聊天視窗代理來分析、規劃並實作程式碼重構任務。 聊天檢視代理提供使用者友善的介面,用於管理聊天對話及存取GitHub Copilot的功能。 聊天視窗包含以下內建代理:

  • 提問:使用 Ask 來詢問關於你的程式碼庫或技術概念的問題。 你可以用 Ask 來解釋程式碼、建議修訂或修正,或提供與程式碼庫相關的資訊。
  • 計畫:在撰寫任何程式碼前,請使用 Plan 代理程式建立結構化的逐步實施計畫。 當計畫看起來合適時,交給執行代理執行。
  • Agent:使用Agent開始一個代理式的編碼工作流程。 你可以用代理程式執行指令、執行程式碼,或在工作空間中執行其他任務。

這很重要

使用代理時,GitHub Copilot可能會多次提出高級請求以完成單一任務。 Premium 要求可用於由使用者起始的提示,以及 GitHub Copilot 代表您採取的後續動作。 所使用的進階要求總數取決於工作的複雜度、所涉及的步驟數目,以及選取的模型。

用 Ask 來重構程式碼

你可以用 Ask 來獲得程式任務的協助、理解棘手的概念,並提升你的程式碼。 Ask 是設計用來與 GitHub Copilot 聊天進行互動對話。 您可以即時提出問題、取得說明或要求建議。

  1. 打開聊天視窗並選擇詢問。

  2. 為聊天添加背景資訊。

    Ask 支援聊天室參與者、斜線指令和聊天室變數。 你可以新增 @workspace 聊天參與者或 #codebase 加入聊天室,提供背景資訊,並附帶檔案或資料夾。

  3. 提出問題來幫助您理解想要重構的程式碼和想要進行的變更。

    例如,你可以請GitHub Copilot協助你了解現有的驗證碼,如何用 OAuth 更新目前的方法。

  4. 建構描述您要實作之更新的提示。

    您的提示應該包含您想要實作的程式代碼功能描述。 例如:

    @workspace I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files. Explain how to update the EnumHelper class using dictionaries and show me the updated code.
    
  5. 在 [聊天] 檢視中檢視建議的程序代碼。

    [聊天] 檢視中顯示的回應會包含可用來實作此功能的代碼段。 您可以輸入更新的提示來精簡程式代碼或要求更多詳細數據。

  6. 要實作建議程式碼,你可以將滑鼠指標移到程式碼片段上,然後在 套用插入複製 三個選項中選擇。

    • 套用:將程式碼建議套用到編輯器中目前的檔案。
    • 插入:在編輯器當前游標位置插入程式碼建議。
    • 複製:將程式碼建議複製到剪貼簿上。
  7. 測試重構的程式代碼,以確保其執行時不會發生錯誤,併產生預期的結果。

使用 Plan 來重構程式碼

當您想在變更前建立結構化、逐步的實施計畫時,可以使用 Plan agent。 Plan 代理人會分析你的程式碼庫,提出釐清問題,並產出詳細的計畫。 當計畫看起來正確時,你可以交給執行代理執行。

小提示

用 Ask 來評估你想重構的程式碼,並在開始修改前評估你的選項。 你可以用 Plan 建立結構化計畫,然後交給執行代理。

  1. 打開聊天視窗並選擇計畫。

  2. 為聊天添加背景資訊。

    透過使用#codebase並在聊天中新增檔案來指定工作區上下文。

  3. 建構描述您要實作之程序代碼功能的提示。

    您的提示應該包含您想要實作的程式代碼功能描述。 例如:

    
    #codebase I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files.
    
    
  4. 檢視GitHub Copilot產生的結構化實施計畫。

    Plan 代理程式會建立詳細計畫,您可以在進行程式碼變更前檢視。

  5. 當計畫看起來合適時,交給執行代理執行。

    你可以把計畫交給代理,讓他把變更套用到你的程式碼庫。

  6. 在程式代碼編輯器中檢閱建議的編輯。

  7. 接受或捨棄建議的編輯。

    您可以使用向上和向下箭號瀏覽編輯。 您可以使用出現在每個編輯上的快捷功能表,個別保留、撤銷或刪除建議的編輯。 你也可以使用編輯標籤頁底部(或聊天視窗)底部的 「保留 」和 「復原 」按鈕,一次接受或拒絕所有編輯。

  8. 測試重構的程式代碼,以確保其執行時不會發生錯誤,併產生預期的結果。

使用 Agent 來重構程式碼

當你想自動化重構程式碼時,可以使用代理程式。 代理人作為自主代理人,能代表你採取行動。 你可以請GitHub Copilot執行特定任務,它會根據你的請求產生程式碼。

透過代理,你可以用自然語言指定高階任務,讓GitHub Copilot自主推理請求、規劃所需工作,並將變更套用到程式碼庫中。 代理程式結合程式碼編輯與工具呼叫來完成您指定的任務。 處理您的要求時,它會監視編輯和工具的結果,並反覆查看以解決所發生任何問題。

這很重要

使用代理時,GitHub Copilot可能會多次提出高級請求以完成單一任務。 Premium 要求可用於由使用者起始的提示,以及 GitHub Copilot 代表您採取的後續動作。 所使用的進階要求總數取決於工作的複雜度、所涉及的步驟數目,以及選取的模型。

  1. 打開聊天視窗並選擇代理人。

  2. 設計一個提示,描述你想GitHub Copilot執行的任務。

    假設您有一個程式代碼專案,使用兩個或多個進程/技術來完成相同的工作。 你可以請GitHub Copilot用單一方法重構你的程式碼,以提升一致性、可維護性和效能。

    例如:

    
    Review the LINQ code used in the JsonData and JsonLoanRepository classes. Refactor the methods in the JsonPatronRepository class using LINQ queries. Ensure that existing code functionality is maintained.
    
    
  3. 代理可能會調用多種工具來完成不同的任務。 您可以選擇性地選取 [工具] 圖示,以設定哪些工具可用來回應您的要求。

  4. 確認工具呼叫和命令行命令。

    在執行終端機指令或非內建工具之前,GitHub Copilot會請求確認以繼續。 需要確認,因為工具可能會在本機計算機上執行,並執行修改檔案或數據的動作。

  5. GitHub Copilot 偵測程式碼編輯與終端指令中的問題,並會迭代並執行解決的行動。

    這很重要

    雖然GitHub Copilot能自我療癒,但不一定能自行解決問題。 你可以暫停這個過程,並提供更多背景說明,幫助GitHub Copilot理解問題。 您也可以取消程序,然後以新的提示重新開始。

  6. 檢閱建議的編輯,並接受或捨棄建議的編輯。

  7. 測試重構的程式代碼,以確保其會產生預期的結果。

    代理程式應該能自行解決問題,但你還是應該測試程式碼,確保它能正常運作。

    你可以在聊天視窗裡用 復原 按鈕還原代理所做的編輯。 你也可以在編輯器中使用還 選項來還原代理所做的變更。

何時該選擇代理人而非計畫

請考慮以下標準來選擇計劃與代理人:

  • 規劃:Plan 在撰寫任何程式碼前,會建立結構化且逐步的實施計畫。 代理程式會自動決定要編輯的相關上下文與檔案,並開始直接進行修改。
  • 任務複雜度:代理程式更適合處理需要修改程式碼及呼叫工具或終端指令的複雜任務。
  • 持續時間:代理處理請求需多步驟,因此產生回應可能需要較長時間。 例如,決定要編輯的相關內容和檔案,以便制定行動計劃,等等。
  • 自我修復:代理會評估生成的編輯結果,並可能多次迭代以解決中間問題。
  • 請求配額:當你使用代理模式時,根據任務的複雜度,一個提示可能會引發大量後端請求。

總結

GitHub Copilot 可以用來重構你的程式碼庫。 你可以利用聊天視窗代理來分析、規劃並實作程式碼重構任務。 聊天檢視中包含三個內建代理程式:Ask、Plan 和 Agent。 你可以用 Ask 來詢問關於你的程式碼庫或技術概念的問題。 你可以用 Plan 先建立結構化的實施計畫,再寫程式碼。 你可以用代理程式啟動代理式的程式工作流程。