Sdílet prostřednictvím


Extrahovat metoda optimalizace struktury programu (C#)

Metoda extrakce je refactoring operace, která lze snadno vytvořit novou metodu z fragment kódu v existujícího člena.

Pomocí Metoda extrakce, můžete vytvořit nový způsob extrahování výběr kódu z uvnitř bloku kódu existujícího člena.Nové, extrahované metoda obsahuje vybraný kód a vybraný kód do existujícího člena je nahrazen volání nové metody.Zapnutí fragment kódu do vlastní způsob umožňuje rychle a přesně uspořádání kódu pro lepší opětovné použití a čitelnost.

Metoda extrakce má následující výhody:

  • Doporučuje nejlépe tvorby ve zdůraznění diskrétní, opakovaně použitelné metody.

  • Doporučuje se trasparentní zdrojový kód prostřednictvím dobré organizace.

    Popisné názvy jsou metody používané, vysoké úrovně můžete podrobnější jako sérii komentáře.

  • Podporuje vytváření metod rozlišená zjednodušit přepsání.

  • Duplikace kódu zmenší.

Metoda extrakce

  1. Vytvoření aplikace konzoly s názvem ExtractMethoda potom nahradit Program s následujícím kódem příkladu.

    class A
    {
        const double PI = 3.141592;
    
        double CalculatePaintNeeded(double paintPerUnit, double radius)
        {
            // Select any of the following:
            // 1. The entire next line of code.
            // 2. The right-hand side of the next line of code.
            // 3. Just "PI *" of the right-hand side of the next line
            //    of code (to see the prompt for selection expansion).
            // 4.  All code within the method body.
            // ...Then invoke Extract Method.
    
            double area = PI * radius * radius;
    
            return area / paintPerUnit;
        }
    }
    
  2. Vyberte fragment kódu, který chcete extrahovat:

    double area = PI * radius * radius;
    
  3. Na Refactor nabídky, klepněte na tlačítko Metoda extrakce.

    Zobrazí se dialogové okno Extrahovat metodu.

    Alternativně můžete zadat také klávesovou zkratku CTRL + R M zobrazení Metoda extrakce dialogové okno.

    Také můžete tlačítkem vybrané kódu, přejděte na Refactora klepněte na tlačítko Metoda extrakce zobrazení Metoda extrakce dialogové okno.

  4. Zadejte název nové metody, jako například CircleArea, v Nový název metody pole.

    Zobrazí náhled nový podpis metody podle Náhled podpis metody.

  5. Klikněte na tlačítko OK.

Poznámky

Při použití Metoda extrakce příkaz Nová metoda vkládá následující zdrojový člen ve stejné třídě.

Částečné typy

Pokud je třída částečný typ pak Metoda extrakce generuje nové metody bezprostředně následující zdrojový člen.Metoda extrakce Určuje podpis nové metody, při žádné instance dat odkazuje kód v metodě nové vytvoření statické metody.

Obecné parametry typu

Při extrahování metodu, která má parametr typu bez omezení obecné generovaný kód nepřidá ref modifikátor tomuto parametru Pokud je jí přiřazena hodnota.Pokud extrahované metoda bude podporovat typy odkazů jako argument pro obecný typ a potom přidejte ručně ref modifikátor parametru v podpis metody.

Anonymní metody

Pokud se pokusíte extrahovat část anonymní metody, která obsahuje odkaz na místní proměnnou, která je deklarována nebo odkazuje vně anonymní metody, pak Visual Studio upozorní potenciální sémantické změny.

Anonymní metody používá hodnoty místní proměnné, se získá hodnota v okamžiku provedení anonymní metody.Když anonymní metody je extrahován do jiné metody, je v okamžiku volání metody extrahované získané hodnoty místní proměnné.

Následující příklad ukazuje tato změna sémantické.Pokud tento kód spuštěn, pak 11 budou vytištěny v konzole.Používáte-li Metoda extrakce extrahovat oblast kódu, který je označen komentáře kódu do vlastní metodu a pak spustit refactored kód, pak 10 budou vytištěny v konzole.

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

Chcete-li tuto situaci vyřešit, proveďte místní proměnné, které jsou použity v polích anonymní metody třídy.

Viz také

Koncepty

Optimalizace struktury programu (C#)