使用 GitHub Copilot 内联聊天重构代码

已完成

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

如果解释很长或很复杂,则可以转到“聊天”视图以继续对话。 还可以使用聊天视图提出后续问题或请求其他信息。

使用内联聊天重构代码

如果要重构执行特定任务的代码部分,请使用内联聊天功能。 对于涉及更新多个文件或项目的更复杂的更改,请使用聊天视图模式之一。

若要使用内联聊天重构代码,请执行以下步骤:

  1. 打开包含要优化的代码的文件。

  2. 选择要优化的代码。

  3. 打开内联聊天会话。

    使用 Ctrl+I 键盘快捷方式打开内联聊天会话。 或者,可以从其中一个 GitHub Copilot 菜单中选择 编辑器内联聊天

  4. 输入要求优化的提示。

    例如: 是否可以改进此代码?

  5. 查看建议的代码更新。

    Copilot 会直接在编辑器中应用建议的代码更新,你可以在编辑器中结合周围代码的完整上下文进行查看。

  6. 选择 “接受 ”或 “关闭 ”以接受或放弃建议的代码更新。

    与所有 Copilot 建议一样,请检查修改后的代码是否运行时没有错误并生成正确的结果。

以下示例演示如何使用内联聊天重构处理数据的 C# 方法。

原始方法执行数据清理、构造数据表,然后打印表的内容。 将多个作组合成一种方法使得维护和测试代码更加困难。

可以通过要求内联聊天为原始方法中执行的每个任务创建单独的方法来重构原始方法。

下面是原始代码:

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. 输入一个提示,要求 Copilot 为每个任务创建单独的方法,然后按 Enter

    例如: 我想重构 ProcessData 方法。我需要用于数据清理的方法、用于打印的方法和数据处理方法。

  4. 查看建议的代码更新。

    对于此示例,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. 选择 “接受 ”或 “关闭 ”以接受或放弃建议的代码更新。

    在此示例中,建议的代码看起来不错,因此可以选择 “接受 ”将重构的代码应用于项目。

    与所有 Copilot 建议一样,请检查修改后的代码是否运行时没有错误并生成正确的结果。

  6. 测试重构的代码,以确保其运行时不会出现错误并生成预期结果。

概要

GitHub Copilot 的内联聊天功能允许直接在代码编辑器中重构代码。 如果想要更改代码,而无需切换到聊天视图,则内联聊天非常有用。 可以使用内联聊天获取特定编码任务的帮助,例如重构函数或改进代码可读性。 还可以使用内联聊天在重构之前评估现有代码。