Refactoring kódu s využitím GitHub Copilot inline chatu

Dokončeno

Funkce vloženého chatu GitHub Copilota umožňuje přepracování kódu přímo v editoru kódu. Vložený chat je užitečný, když chcete v kódu dělat změny, aniž byste museli přepnout do zobrazení chatu.

Vysvětlení kódu

Před refaktoringem kódu je důležité porozumět kódu, se kterým pracujete. Měli byste pochopit účel kódu, jeho fungování a případné závislosti. Pokud kód neznáte, přečtěte si ho a porozumíte jeho struktuře a logice. Použití GitHub Copilot k analýze kódu vám může pomoct identifikovat oblasti pro zlepšení a navrhnout možnosti refaktoringu.

Pomocí funkce Vložený chat můžete klást otázky týkající se kódu, získat vysvětlení konkrétních částí nebo požádat o vylepšení. Můžete například požádat GitHub Copilot, aby vysvětlil, jak konkrétní funkce funguje, nebo navrhnout způsoby, jak ji optimalizovat. Pomocí funkce Vložený chat můžete také požádat o pomoc s konkrétními úlohami kódování, jako je refaktoring funkce nebo zlepšení čitelnosti kódu.

Tady je několik příkladů dotazů, které žádají GitHub Copilot o pomoc s kódem:

/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

Pokud je vysvětlení dlouhé nebo složité, můžete přejít do zobrazení chatu a pokračovat v konverzaci. Zobrazení chatu můžete také použít k kladení následných otázek nebo vyžádání dalších informací.

Využijte řádkový chat k refaktoringu kódu

Funkci Vložený chat použijte, pokud chcete refaktorovat část kódu, která provádí konkrétní úlohu. Pro složitější změny, které zahrnují aktualizaci více souborů nebo projektů, použijte jeden z režimů zobrazení chatu.

Pokud chcete refaktorovat kód pomocí Chat in-line, postupujte takto:

  1. Otevřete soubor obsahující kód, který chcete optimalizovat.

  2. Vyberte kód, který chcete optimalizovat.

  3. Otevřete relaci chatu v úvodním okně.

    K otevření relace chatu použijte klávesovou zkratku Ctrl+I. Případně můžete vybrat Editor Inline Chat z některé z GitHub Copilot nabídek.

    Poznámka:

    Pokud je soubor součástí aktivní relace úprav chatu, stisknutím Ctrl+I se v zobrazení chatu otevře Zeptat se v chatu místo běžného vloženého chatu. Tím se váš příkaz nasměruje do existující relace, tak, aby mohl využívat celý kontext konverzace. Nastavte inlineChat.askInChat na false v nastavení VS Code, chcete-li vždy používat běžný vložený chat bez ohledu na stav relace.

  4. Zadejte výzvu, která požádá o optimalizaci.

    Můžete například tento kód vylepšit?

  5. Zkontrolujte navrženou aktualizaci kódu.

    GitHub Copilot použije navrhovaná aktualizace kódu přímo v editoru, kde ji můžete zkontrolovat na místě s úplným kontextem okolního kódu.

  6. Výběrem možnosti Přijmout nebo Zavřít přijmete nebo zahodíte navrženou aktualizaci kódu.

    Stejně jako u všech Návrhy Copilota GitHubu zkontrolujte, jestli se upravený kód spustí bez chyb, a vytvoří správný výsledek.

Následující příklad ukazuje, jak pomocí Inline Chat refaktorovat metodu jazyka C#, která zpracovává data.

Původní metoda provádí čištění dat, vytváří tabulku dat a pak vytiskne obsah tabulky. Kombinace několika operací do jedné metody znesnadňuje údržbu a testování kódu.

Původní metodu můžete refaktorovat tak, že požádáte Inline Chat o vytvoření samostatných metod pro každou z úloh provedených v původní metodě.

Tady je původní kód:

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);
    }
}

Pokud chcete refaktorovat metodu ProcessData, postupujte takto:

  1. Vyberte metodu ProcessData.

  2. Otevřete integrovaný chat.

  3. Zadejte výzvu, která požádá GitHub Copilot o vytvoření samostatných metod pro každý úkol, a stiskněte Enter.

    Příklad: Chci refaktorovat metodu ProcessData. Chci metodu čištění dat, metodu pro tisk a metodu zpracování dat.

  4. Zkontrolujte navrženou aktualizaci kódu.

    V tomto příkladu GitHub Copilot navrhne refaktorovanou verzi původní metody, která odděluje úlohy čištění a tisku do samostatných metod.

    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);
        }
    }
    

    V tomto příkladu refaktoring původního kódu zlepšuje modularitu a usnadňuje pochopení kódu.

  5. Výběrem možnosti Přijmout nebo Zavřít přijmete nebo zahodíte navrženou aktualizaci kódu.

    V tomto příkladu vypadá navrhovaný kód dobře, takže byste vybrali Přijmout pro použití refaktorovaného kódu ve vašem projektu.

    Stejně jako u všech Návrhy Copilota GitHubu zkontrolujte, jestli se upravený kód spustí bez chyb, a vytvoří správný výsledek.

  6. Otestujte refaktorovaný kód, abyste zajistili, že běží bez chyb, a vygeneruje očekávaný výsledek.

Shrnutí

Funkce Inline chatu GitHub Copilot umožňuje refaktorovat kód přímo v editoru kódu. Vložený chat je užitečný, když chcete v kódu dělat změny, aniž byste museli přepnout do zobrazení chatu. Pomocí inline Chatu můžete požádat o pomoc s konkrétními úlohami kódování, jako je refaktoring funkce nebo zlepšení čitelnosti kódu. Můžete také použít Inline Chat k vyhodnocení existujícího kódu před jeho úpravami.