Рефакторинг кода с помощью встроенного чата 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 , чтобы открыть сеанс встроенного чата. Кроме того, можно выбрать Editor Inline Chat из одного из меню GitHub Copilot.

  4. Введите запрос на оптимизацию.

    Например: можно ли улучшить этот код?

  5. Просмотрите предлагаемое обновление кода.

    GitHub Copilot применяет предлагаемое обновление кода непосредственно в редакторе, где его можно просмотреть непосредственно с полным контекстом существующего кода.

  6. Нажмите кнопку "Принять " или "Закрыть ", чтобы принять или отменить предлагаемое обновление кода.

    Как и во всех предложениях GitHub Copilot, убедитесь, что измененный код выполняется без ошибок и выдает правильный результат.

В следующем примере показано, как использовать встроенный чат для рефакторинга метода 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 позволяет выполнять рефакторинг кода прямо в редакторе. Встроенный чат полезен, если вы хотите внести изменения в код, не переключившись в представление чата. Вы можете использовать встроенный чат для получения справки по конкретным задачам программирования, таким как рефакторинг функции или улучшение удобочитаемости кода. Вы также можете использовать встроенный чат для оценки существующего кода перед рефакторингом.