Entendo a importância do código bem documentado. Mas também entendo a importância do código de auto-documentação . Quanto mais fácil é ler visualmente uma função específica, mais rápido podemos seguir em frente durante a manutenção do software.
Com isso dito, eu gosto de separar grandes funções em outras menores. Mas faço isso a um ponto em que uma classe pode ter mais de cinco delas apenas para servir a um método público. Agora multiplique cinco métodos privados por cinco públicos, e você terá cerca de vinte e cinco métodos ocultos que provavelmente serão chamados apenas uma vez por esses públicos.
Claro, agora é mais fácil ler esses métodos públicos, mas não posso deixar de pensar que ter muitas funções é uma prática ruim.
[Editar]
As pessoas me perguntam por que acho que ter muitas funções é uma prática ruim.
A resposta simples: é um pressentimento.
Minha crença não é, nem um pouco, apoiada por horas de experiência em engenharia de software. É apenas uma incerteza que me deu um "bloqueio de escritor", mas para um programador.
No passado, eu apenas programava projetos pessoais. Recentemente, mudei para projetos baseados em equipes. Agora, quero garantir que outras pessoas possam ler e entender meu código.
Eu não tinha certeza do que melhoraria a legibilidade. Por um lado, eu estava pensando em separar uma grande função em outras menores com nomes inteligíveis. Mas havia um outro lado de mim dizendo que era apenas redundante.
Então, estou pedindo que isso me ilumine para escolher o caminho correto.
[Editar]
Abaixo, incluí duas versões de como eu poderia resolver o meu problema. O primeiro resolve isso não separando grandes partes do código. O segundo faz coisas separadas.
Primeira versão:
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");
}
Segunda versão:
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");
}
Nos exemplos acima, o último chama uma função que será usada apenas uma vez durante todo o tempo de execução do programa.
Nota: o código acima é generalizado, mas é da mesma natureza que o meu problema.
Agora, aqui está a minha pergunta: qual? Eu escolho o primeiro ou o segundo?