class Przyklad
{
public void DlugaMetoda()
{
Console.WriteLine("Naglowek");
Console.WriteLine("---------------------------");
int wynik = 3 * 5;
int a = 0;
for (int i = 0; i < wynik; i++)
{
a += wynik;
}
if (wynik < a)
{
wynik = 123 + 123;
}
else
{
a = wynik;
}
Console.WriteLine("Wyniki:");
Console.WriteLine("a: " + a);
Console.WriteLine("wynik: " + wynik);
Console.WriteLine("---------------------------");
Console.WriteLine("Stopka");
}
}
Rozwiązanie tego problemu jest banalne. Wystarczy stosować "wydzielenie metody". Czyli tą długa metodę dzielimy na mniejsze:
class Przyklad
{
public void DlugaMetoda()
{
DrawNaglowek();
int wynik = ObliczWynik(3, 5);
int a = 0;
a = ZrobCos(wynik, a);
ZrobCosInnego(ref wynik, ref a);
DrawWyniki(wynik, a);
DrawStopka();
}
private static void ZrobCosInnego(ref int wynik, ref int a)
{
if (wynik < a)
{
wynik = 123 + 123;
}
else
{
a = wynik;
}
}
private static int ZrobCos(int wynik, int a)
{
for (int i = 0; i < wynik; i++)
{
a += wynik;
}
return a;
}
private static void DrawStopka()
{
Console.WriteLine("---------------------------");
Console.WriteLine("Stopka");
}
private static void DrawWyniki(int wynik, int a)
{
Console.WriteLine("Wyniki:");
Console.WriteLine("a: " + a);
Console.WriteLine("wynik: " + wynik);
}
private static void DrawNaglowek()
{
Console.WriteLine("Naglowek");
Console.WriteLine("---------------------------");
}
private static int ObliczWynik(int a, int b)
{
return a * b;
}
}
Gdzie mamy zysk?
-wprowadzanie zmian w takiej metodzie jest łatwiejsze
-ciało metody jest CZYTELNIEJSZE
-jesteśmy w stanie objąć całą metodę wzrokiem
-jeśli dobrze nazwiemy te inne metody powstałe przy "wydzieleniu", to nie będziemy musieli zaglądać do ich kodu, gdyż ich nazwa określi nam co robią
1 komentarz:
To zagadnienie, aczkolwiek bardzo ważne, sprowadza się jednak głównie do teorii. Często programista traci mnóstwo czasu zastanawiając się, jak nazwać dany blok kodu (tylko w teorii zawsze da się go łatwo nazwać), a potem tworzy nazwy długości kilkunastu wyrazów, a potem sam już nie pamięta, ile ma tych metod. W projektach rangi korporacyjnej kładzie się nacisk na tę best practice, ale jednocześnie przestrzega przed zbytnim hurraoptymizmem. "Religijne" podejście (tutaj na szczęście nie prezentowane :) ) "metoda ma liczyć góra 50 linijek" jest często lansowane przez początkujących programistów, którzy właśnie dostali "seniora" i filozofują i nie przynosi pozytywnych rezultatów. Niemniej zawsze należy się zastanowić, jak "uczytelnić" kod w podany przez Ciebie sposób.
Prześlij komentarz