Рефакторинг коду за допомогою GitHub Copilot Inline Chat

Завершено

Функція 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

Якщо пояснення довге або складне, можна перейти до подання Чат, щоб продовжити розмову. Ви також можете використовувати подання чату, щоб ставити подальші запитання або запитувати додаткову інформацію.

Використання вбудованого чату для рефактора коду

Використовуйте функцію вбудованого чату, коли потрібно відновити розділ коду, який виконує певне завдання. Щоб отримати складніші зміни, пов'язані з оновленням кількох файлів або проектів, використовуйте один із режимів перегляду чату.

Щоб змінити код за допомогою вбудованого чату, виконайте такі дії:

  1. Відкрийте файл із кодом, який потрібно оптимізувати.

  2. Виберіть код, який потрібно оптимізувати.

  3. Відкрийте сеанс вбудованого чату.

    Скористайтеся сполученням клавіш Ctrl+I , щоб відкрити сеанс вбудованого чату. Альтернативно, ви можете вибрати Editor Inline Chat з одного з GitHub Copilot меню.

    Нотатка

    Якщо файл належить до активної сесії редагування чату, натискання Ctrl+I відкриває «Запитати в чаті » у режимі чату замість звичайного вбудованого чату. Це маршрутизує ваш запит у існуючу сесію, щоб він міг використовувати повний контекст розмови. Щоб завжди використовувати звичайний онлайн-чат незалежно від стану сесії, встановіть inlineChat.askInChat у false налаштуваннях VS Code.

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

    Наприклад: Чи можна покращити цей код?

  5. Перегляньте запропоноване оновлення коду.

    GitHub Copilot застосовує рекомендоване оновлення коду безпосередньо в редакторі, де ви можете переглядати його на місці, з повним контекстом навколишнього коду.

  6. Виберіть «Прийняти » або «Закрити », щоб прийняти або відхилити рекомендоване оновлення коду.

    Як і з усіма GitHub пропозиції 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. Введіть запит, який просить 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. Виберіть «Прийняти » або «Закрити », щоб прийняти або відхилити рекомендоване оновлення коду.

    У цьому прикладі рекомендований код виглядає добре, тому вам слід обрати Accept , щоб застосувати рефакторований код до вашого проєкту.

    Як і з усіма GitHub пропозиції Copilot, перевірте, чи працює оновлений код без помилок і дає правильний результат.

  6. Перевірте відшкодований код, щоб переконатися, що він працює без помилок і генерує очікуваний результат.

Зведення

Функція Inline Chat від GitHub Copilot дозволяє безпосередньо рефакторити код у редакторі коду. Вбудований чат зручно використовувати, якщо потрібно внести зміни до коду, не переходячи до подання чату. У вбудованому чаті можна звернутися по допомогу з певними завданнями кодування, наприклад рефактотором функції або підвищенням зручності читання коду. Ви також можете використовувати вбудований чат, щоб оцінити наявний код перед рефактотором.