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 メニューの 1 つから エディター インライン チャット を選択することもできます。

  4. 最適化を求めるプロンプトを入力します。

    例: このコードを改善できますか?

  5. 推奨されるコード更新プログラムを確認します。

    Copilot は、提案されたコードの更新をエディター内に直接適用します。エディターでは、周囲のコードのコンテキストを完全に把握し、その場で確認することができます。

  6. 推奨されるコードの更新を 受け入 れるか破棄するには、[承諾] または [閉じる] を選択します。

    すべてのCopilot提案と同様に、修正されたコードがエラーなしで実行され、正しい結果が生成されることを確認してください。

次の例では、インライン チャットを使用して、データを処理する C# メソッドをリファクタリングする方法を示します。

元のメソッドは、データ クレンジングを実行し、データ テーブルを構築してから、テーブルの内容を出力します。 複数の操作を 1 つのメソッドに結合すると、コードの保守とテストが困難になります。

元のメソッドをリファクタリングするには、元のメソッドで実行されたタスクごとに個別のメソッドを作成するようにインライン チャットに依頼します。

元のコードを次に示します。

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 のインライン チャット機能を使用すると、コード エディターでコードを直接リファクタリングできます。 インライン チャットは、チャット ビューに切り替えずにコードを変更する場合に便利です。 インライン チャットを使用して、関数のリファクタリングやコードの読みやすさの向上など、特定のコーディング タスクに関するヘルプを求めることができます。 また、リファクタリングの前にインライン チャットを使用して既存のコードを評価することもできます。