Я розумію важливість добре задокументованого коду. Але я також розумію важливість самодокументірован коду. Чим легше візуально читати певну функцію, тим швидше ми можемо рухатися далі під час обслуговування програмного забезпечення.
З урахуванням сказаного, я люблю розділяти великі функції на інші менші. Але я роблю це до того моменту, коли клас може мати більше п'яти з них лише для того, щоб служити одному публічному методу. Тепер помножте п’ять приватних методів на п’ять публічних, і ви отримаєте близько двадцяти п’яти прихованих методів, які, ймовірно, будуть названі лише один раз тими публічними.
Звичайно, зараз простіше читати ці публічні методи, але я не можу не думати, що занадто багато функцій - це погана практика.
[Редагувати]
Люди питали мене, чому я вважаю, що занадто багато функцій - це погана практика.
Проста відповідь: це відчуття кишки.
Моє переконання, ні на один біт не підкріплене будь-якими годинами досвіду інженерії програмного забезпечення. Це просто невизначеність, що дало мені "письменницький блок", але для програміста.
У минулому я програмував лише особисті проекти. Зовсім недавно я перейшов до командних проектів. Тепер я хочу забезпечити, щоб інші могли читати і розуміти мій код.
Я не був впевнений, що покращить розбірливість. З одного боку, я думав розділити одну велику функцію на іншу меншу з зрозумілими назвами. Але ще одна сторона мене сказала, що це просто зайве.
Тож я прошу цього просвітити себе, щоб вибрати правильний шлях.
[Редагувати]
Нижче я включив дві версії, як я міг вирішити свою проблему. Перший вирішує це, не відокремлюючи великих фрагментів коду. Другий робить окремі речі.
Перша версія:
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");
}
Друга версія:
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");
}
У наведених вище прикладах останній викликає функцію, яка буде використовуватися лише один раз протягом усього часу виконання програми.
Примітка: наведений вище код узагальнений, але він такий же, як і моя проблема.
Тепер ось моє запитання: який? Я вибираю перший чи другий?