Condividi tramite


Estrai metodo

Aggiornamento: novembre 2007

Estrai metodo è un'operazione di refactoring che consente di creare facilmente un nuovo metodo da un frammento di codice in un membro esistente. Per ulteriori informazioni, vedere Refactoring.

Con Estrai metodo è possibile creare un nuovo metodo tramite l'estrazione di una selezione di codice dal blocco di codice di un membro esistente. Il nuovo metodo estratto contiene il codice selezionato, mentre il codice selezionato nel membro esistente viene sostituito con una chiamata al nuovo metodo. Se si trasforma un frammento di codice in un metodo corrispondente, sarà possibile riorganizzare il codice in modo rapido e accurato per migliorarne il riutilizzo e la leggibilità.

L'utilizzo di Estrai metodo comporta i seguenti vantaggi:

  • Fornisce procedure di codifica migliori presentando metodi distinti e riutilizzabili.

  • Fornisce codice autodocumentato mediante una buona organizzazione.

    Quando si utilizzano nomi descrittivi, i metodi di alto livello possono fornire maggiori informazioni, come una serie di commenti.

  • Favorisce la creazione di metodi più controllati per semplificare l'override.

  • Riduce la duplicazione del codice.

Note

Quando si utilizza il comando Estrai metodo, il nuovo metodo viene inserito dopo il membro di origine nella stessa classe.

Tipi parziali

Se la classe è un tipo parziale, Estrai metodo genera il nuovo metodo immediatamente dopo il membro di origine. Estrai metodo determina la firma del nuovo metodo, creando un metodo statico quando il codice all'interno del nuovo metodo non fa riferimento a dati di istanza.

Parametri di tipo generico

Quando si estrae un metodo con un parametro di tipo generico non vincolato, il codice generato non aggiungerà il modificatore ref a tale parametro, a meno che non gli venga assegnato un valore. Se il metodo estratto supporta tipi di riferimento come l'argomento di tipo generico, sarà necessario aggiungere manualmente il modificatore ref al parametro nella firma del metodo.

Metodi anonimi

Se si tenta di estrarre una parte di un metodo anonimo che include un riferimento a una variabile locale dichiarata o a cui si fa riferimento al di fuori del metodo anonimo, Visual Studio genererà un avviso sulle potenziali modifiche della semantica.

Quando un metodo anonimo utilizza il valore di una variabile locale, il valore viene restituito al momento dell'esecuzione del metodo anonimo. Quando si estrae un metodo anonimo in un altro metodo, il valore della variabile locale viene restituito al momento della chiamata al metodo estratto.

Questa modifica della semantica viene illustrata nell'esempio riportato di seguito. Se si esegue il codice, nella console verrà stampato 11. Se si utilizza Estrai metodo per estrarre l'area di codice contrassegnata da commenti nel relativo metodo e si esegue il codice di cui è stato effettuato il refactoring, nella console verrà stampato 10.

class Program
{
    delegate void D();
    D d;
    static void Main(string[] args)
    {
        Program p = new Program();
        int i = 10;
        /*begin extraction*/
            p.d = delegate { Console.WriteLine(i++); };
        /*end extraction*/
        i++;
        p.d();
    }
}

Per ovviare a questo problema, trasformare le variabili locali utilizzate nel metodo anonimo in campi della classe.

Vedere anche

Attività

Procedura: effettuare il refactoring di codice con Estrai metodo