使用 GitHub Copilot Inline Chat 重構程式碼

已完成

GitHub Copilot 的線上聊天功能允許你直接在程式碼編輯器中重構程式碼。 當您想要變更程序代碼,而不需切換至 [聊天] 檢視時,內嵌聊天很有用。

瞭解您的程序代碼

在重構程序代碼之前,請務必瞭解您正在使用的程序代碼。 您應該瞭解程序代碼的目的、運作方式,以及它可能擁有的任何相依性。 如果您不熟悉程式代碼,請花一些時間閱讀程式代碼並瞭解其結構和邏輯。 利用GitHub Copilot分析程式碼,能幫助你找出改進空間並建議重構選項。

您可以使用內嵌聊天功能來詢問有關程式碼的問題、取得特定部分的說明,或要求改進建議。 例如,你可以請GitHub Copilot解釋某個函數是如何運作的,或建議如何優化它。 您也可以使用內嵌聊天功能來尋求特定程式代碼撰寫工作的協助,例如重構函式或改善程式代碼可讀性。

以下是一些向 GitHub Copilot 請求協助程式碼的要求範例:

/explain Explain how authentication is implemented in this code
/explain Can this code be updated to improve security? Explain the concepts and show some examples

如果說明很長或很複雜,您可以移至 [聊天] 檢視以繼續交談。 您也可以使用 [聊天] 檢視來詢問後續問題或要求其他資訊。

使用內嵌聊天來重構程序代碼

當您想要重構執行特定工作的程式碼區段時,請使用 Inline Chat 功能。 如需涉及更新多個檔案或專案的更複雜的變更,請使用其中一種聊天檢視模式。

若要使用內嵌聊天重構程式代碼,請遵循下列步驟:

  1. 開啟包含您要優化之程式代碼的檔案。

  2. 選取您想要優化的程序代碼。

  3. 開啟內嵌聊天會話。

    使用 Ctrl+I 鍵盤快捷方式開啟內嵌聊天會話。 或者,你也可以從GitHub Copilot選單中選擇Editor Inline Chat

  4. 輸入要求優化的提示。

    例如: 這段程式碼可以改進嗎?

  5. 檢閱建議的程式代碼更新。

    GitHub Copilot 直接在編輯器中套用建議的程式碼更新,讓你能在原地檢視,並完整掌握周圍程式碼的上下文。

  6. 選擇 接受關閉 以接受或丟棄建議的程式碼更新。

    和所有GitHub Copilot建議一樣,請檢查修訂後的程式碼是否能正常執行並產生正確結果。

下列範例示範如何使用 Inline Chat 來重構處理數據的 C# 方法。

原始方法會執行數據清理、建構數據表,然後列印數據表的內容。 將數個作業結合成一個方法,可讓維護及測試程序代碼更加困難。

您可以藉由要求 Inline Chat 為原始方法中執行的每個工作建立個別的方法,以重構原始方法。

以下是原始程式代碼:

using System;
using System.Data;

public class DataProcessor
{
    public void ProcessData(string item, string price)
    {
        // Cleanse the data
        item = item.Trim();    // Remove leading and trailing whitespace
        price = price.Trim();  // Remove leading and trailing whitespace
        double priceValue = double.Parse(price);   // Convert price to a double
        // More cleansing operations can be added here

        // Create and print a DataTable
        DataTable table = new DataTable();
        table.Columns.Add("Item", typeof(string));
        table.Columns.Add("Price", typeof(double));
        table.Rows.Add(item, priceValue);
        foreach (DataRow row in table.Rows)
        {
            Console.WriteLine($"Item: {row["Item"]}, Price: {row["Price"]}");
        }
    }
}

// Example usage
class Program
{
    static void Main()
    {
        string item = "  Apple  ";
        string price = "  1.50  ";
        var processor = new DataProcessor();
        processor.ProcessData(item, price);
    }
}

若要重構 ProcessData 方法,請遵循下列步驟:

  1. 選取 ProcessData 方法。

  2. 開啟內嵌聊天。

  3. 輸入一個提示,要求GitHub Copilot為每個任務建立獨立的方法,然後按下 Enter

    舉例來說: 我想重構 ProcessData 方法。我想要一個資料清理的方法、一個列印方法,以及一個資料處理的方法。

  4. 檢閱建議的程式代碼更新。

    在這個例子中,GitHub Copilot建議使用原始方法的重構版本,將清理與列印任務分離為不同的方法。

    using System;
    using System.Data;
    
    public class DataProcessor
    {
        public void ProcessData(string item, string price)
        {
            (string cleansedItem, double cleansedPrice) = CleanseData(item, price);
            DataTable table = new DataTable();
            table.Columns.Add("Item", typeof(string));
            table.Columns.Add("Price", typeof(double));
            table.Rows.Add(cleansedItem, cleansedPrice);
            PrintData(table);
        }
    
        private (string, double) CleanseData(string item, string price)
        {
            string trimmedItem = item.Trim();
            string trimmedPrice = price.Trim();
            double priceValue = double.Parse(trimmedPrice);
            return (trimmedItem, priceValue);
        }
    
        private void PrintData(DataTable table)
        {
            foreach (DataRow row in table.Rows)
            {
                Console.WriteLine($"Item: {row["Item"]}, Price: {row["Price"]}");
            }
        }
    }
    
    // Example usage
    class Program
    {
        static void Main()
        {
            string item = "  Apple  ";
            string price = "  1.50  ";
            var processor = new DataProcessor();
            processor.ProcessData(item, price);
        }
    }
    

    在此範例中,重構原始程序代碼可改善模組化,並讓程式代碼更容易瞭解。

  5. 選擇 接受關閉 以接受或丟棄建議的程式碼更新。

    在這個範例中,建議的程式碼看起來不錯,所以你會選擇 接受 ,將重構後的程式碼套用到你的專案中。

    和所有GitHub Copilot建議一樣,請檢查修訂後的程式碼是否能正常執行並產生正確結果。

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

總結

GitHub Copilot 的線上聊天功能允許你直接在程式碼編輯器中重構程式碼。 當您想要變更程序代碼,而不需切換至 [聊天] 檢視時,內嵌聊天很有用。 您可以使用內嵌聊天來尋求特定程式代碼撰寫工作的協助,例如重構函式或改善程式代碼可讀性。 您也可以在重構之前,先使用內嵌聊天來評估現有的程序代碼。