Я понимаю важность хорошо документированного кода. Но я также понимаю важность самодокументируемого кода. Чем проще визуально прочитать определенную функцию, тем быстрее мы можем двигаться во время обслуживания программного обеспечения.
С учетом сказанного я люблю разделять большие функции на другие меньшие. Но я делаю это до такой степени, что класс может иметь более пяти из них только для обслуживания одного открытого метода. Теперь умножьте пять частных методов на пять открытых, и вы получите около двадцати пяти скрытых методов, которые, вероятно, будут вызываться только один раз этими открытыми.
Конечно, теперь легче читать эти общедоступные методы, но я не могу не думать, что слишком много функций - плохая практика.
[Редактировать]
Люди спрашивают меня, почему я считаю слишком много функций плохой практикой.
Простой ответ: это внутреннее чувство.
Мое убеждение не подкреплено какими-то часами опыта разработки программного обеспечения. Это просто неопределенность, которая дала мне «писательский блок», но для программиста.
В прошлом я программировал только личные проекты. Совсем недавно я перешел к групповым проектам. Теперь я хочу, чтобы другие могли читать и понимать мой код.
Я не был уверен, что улучшит разборчивость. С одной стороны, я думал о том, чтобы разделить одну большую функцию на другую с понятными именами. Но была другая сторона меня, говоря, что это просто избыточно.
Итак, я прошу это просветить себя, чтобы выбрать правильный путь.
[Редактировать]
Ниже я включил две версии того, как я мог решить мою проблему. Первый решает эту проблему, не разделяя большие куски кода. Второй делает отдельные вещи.
Первая версия:
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");
}
В приведенных выше примерах последний вызывает функцию, которая будет использоваться только один раз в течение всего времени выполнения программы.
Примечание: приведенный выше код обобщен, но имеет ту же природу, что и моя проблема.
Теперь вот мой вопрос: какой? Я выбираю первый или второй?