Eseguire il refactoring del codice usando la chat inline di GitHub Copilot

Completato

la funzionalità Chat inline di GitHub Copilot consente di effettuare il refactoring del codice direttamente nell'editor di codice. La chat inline è utile quando si vogliono apportare modifiche al codice senza dover passare alla visualizzazione Chat.

Comprendere il codice

Prima di effettuare il refactoring del codice, è importante comprendere il codice che si sta usando. È necessario comprendere lo scopo del codice, il relativo funzionamento e le eventuali dipendenze che potrebbero avere. Se non si ha familiarità con il codice, prenditi del tempo per leggerlo e comprenderne la struttura e la logica. L'uso di GitHub Copilot per analizzare il codice consente di identificare le aree di miglioramento e suggerire opzioni di refactoring.

È possibile usare la funzionalità Chat inline per porre domande sul codice, ottenere spiegazioni di parti specifiche o richiedere suggerimenti per i miglioramenti. Ad esempio, è possibile chiedere GitHub Copilot spiegare il funzionamento di una determinata funzione o suggerire modi per ottimizzarlo. È anche possibile usare la funzionalità Chat inline per richiedere assistenza per attività di codifica specifiche, ad esempio il refactoring di una funzione o il miglioramento della leggibilità del codice.

Di seguito sono riportati alcuni esempi di richieste che richiedono GitHub Copilot assistenza per il codice:

/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

Se la spiegazione è lunga o complessa, è possibile passare alla visualizzazione Chat per continuare la conversazione. È anche possibile usare la visualizzazione Chat per porre domande di completamento o richiedere informazioni aggiuntive.

Usare Chat inline per effettuare il refactoring del codice

Usare la funzionalità Chat inline quando si vuole effettuare il refactoring di una sezione di codice che esegue un'attività specifica. Per modifiche più complesse che comportano l'aggiornamento di più file o progetti, usare una delle modalità di visualizzazione Chat.

Per effettuare il refactoring del codice tramite Chat inline, seguire questa procedura:

  1. Aprire il file contenente il codice da ottimizzare.

  2. Selezionare il codice da ottimizzare.

  3. Aprire una sessione di Chat inline.

    Usare il tasto di scelta rapida CTRL+I per aprire la sessione Chat inline. In alternativa, è possibile selezionare Editor Inline Chat da uno dei menu GitHub Copilot.

  4. Immettere un prompt che richiede un'ottimizzazione.

    Ad esempio: questo codice può essere migliorato?

  5. Esaminare l'aggiornamento del codice suggerito.

    GitHub Copilot applica l'aggiornamento del codice suggerito direttamente nell'editor, in cui è possibile esaminarlo sul posto, con il contesto completo del codice circostante.

  6. Selezionare Accetta o Chiudi per accettare o rimuovere l'aggiornamento del codice suggerito.

    Come per tutti i suggerimenti GitHub Copilot, verificare che il codice modificato venga eseguito senza errori e produa il risultato corretto.

L'esempio seguente illustra come usare Inline Chat per effettuare il refactoring di un metodo C# che elabora i dati.

Il metodo originale esegue la pulizia dei dati, costruisce una tabella dati e quindi stampa il contenuto della tabella. La combinazione di più operazioni in un unico metodo rende più difficile gestire e testare il codice.

È possibile effettuare il refactoring del metodo originale chiedendo a Inline Chat di creare metodi separati per ognuna delle attività eseguite nel metodo originale.

Ecco il codice originale:

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

Per effettuare il refactoring del metodo ProcessData, seguire questa procedura:

  1. Selezionare il metodo ProcessData.

  2. Apri la chat in linea.

  3. Immettere un prompt che chiede GitHub Copilot di creare metodi separati per ogni attività e quindi premere Invio.

    Ad esempio: si vuole effettuare il refactoring del metodo ProcessData. Si desidera un metodo per la pulizia dei dati, un metodo per la stampa e un metodo per l'elaborazione dei dati.

  4. Esaminare l'aggiornamento del codice suggerito.

    Per questo esempio, GitHub Copilot suggerisce una versione di refactoring del metodo originale che separa le attività di pulizia e stampa in metodi separati.

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

    In questo esempio il refactoring del codice originale migliora la modularità e semplifica la comprensione del codice.

  5. Selezionare Accetta o Chiudi per accettare o rimuovere l'aggiornamento del codice suggerito.

    In questo esempio il codice suggerito ha un aspetto ottimale, quindi selezionare Accetta per applicare il codice sottoposto a refactoring al progetto.

    Come per tutti i suggerimenti GitHub Copilot, verificare che il codice modificato venga eseguito senza errori e produa il risultato corretto.

  6. Testare il codice sottoposto a refactoring per assicurarsi che venga eseguito senza errori e generi il risultato previsto.

Riassunto

la funzionalità Chat inline di GitHub Copilot consente di effettuare il refactoring del codice direttamente nell'editor di codice. La chat inline è utile quando si vogliono apportare modifiche al codice senza dover passare alla visualizzazione Chat. È possibile usare Chat inline per richiedere assistenza per attività di codifica specifiche, ad esempio il refactoring di una funzione o il miglioramento della leggibilità del codice. È anche possibile usare Chat inline per valutare il codice esistente prima del refactoring.