Rozumiem znaczenie dobrze udokumentowanego kodu. Ale rozumiem również znaczenie samodokumentowania kodu. Im łatwiej jest wizualnie odczytać określoną funkcję, tym szybciej możemy przejść podczas konserwacji oprogramowania.
Powiedziawszy to, lubię rozdzielać duże funkcje na inne mniejsze. Ale robię to do tego stopnia, że klasa może mieć w górę pięć z nich tylko po to, aby obsługiwać jedną metodę publiczną. Teraz pomnóż pięć prywatnych metod przez pięć publicznych, a otrzymasz około dwudziestu pięciu ukrytych metod, które prawdopodobnie zostaną wywołane tylko raz przez te publiczne.
Jasne, teraz łatwiej jest czytać te publiczne metody, ale nie mogę przestać myśleć, że posiadanie zbyt wielu funkcji to zła praktyka.
[Edytować]
Ludzie pytają mnie, dlaczego uważam, że zbyt wiele funkcji to zła praktyka.
Prosta odpowiedź: to przeczucie.
Moje przekonanie nie jest poparte choćby godzinami doświadczenia w inżynierii oprogramowania. To tylko niepewność, która dała mi „blok pisarza”, ale dla programisty.
W przeszłości programowałem tylko projekty osobiste. Niedawno przeszedłem na projekty zespołowe. Teraz chcę się upewnić, że inni mogą czytać i rozumieć mój kod.
Nie byłem pewien, co poprawi czytelność. Z jednej strony myślałem o podzieleniu jednej dużej funkcji na inne mniejsze o zrozumiałych nazwach. Ale była też inna strona, która powiedziała, że to po prostu zbędne.
Tak więc proszę o oświecenie się, aby wybrać właściwą ścieżkę.
[Edytować]
Poniżej mam włączone dwie wersje jak ja mógłby rozwiązać mój problem. Pierwszy rozwiązuje to, nie rozdzielając dużych fragmentów kodu. Drugi robi osobne rzeczy.
Pierwsza wersja:
public static int Main()
{
// Displays the menu.
Console.WriteLine("Pick your option");
Console.Writeline("[1] Input and display a polynomial");
Console.WriteLine("[2] Add two polynomials");
Console.WriteLine("[3] Subtract two polynomials");
Console.WriteLine("[4] Differentiate two polynomials");
Console.WriteLine("[0] Quit");
}
Druga wersja:
public static int Main()
{
DisplayMenu();
}
private static void DisplayMenu()
{
Console.WriteLine("Pick your option");
Console.Writeline("[1] Input and display a polynomial");
Console.WriteLine("[2] Add two polynomials");
Console.WriteLine("[3] Subtract two polynomials");
Console.WriteLine("[4] Differentiate two polynomials");
Console.WriteLine("[0] Quit");
}
W powyższych przykładach ta ostatnia wywołuje funkcję, która będzie używana tylko raz przez cały czas działania programu.
Uwaga: powyższy kod jest uogólniony, ale ma ten sam charakter co mój problem.
Oto moje pytanie: które? Czy wybieram pierwszy, czy drugi?