Entiendo la importancia de un código bien documentado. Pero también entiendo la importancia del código de autodocumentación . Cuanto más fácil sea leer visualmente una función particular, más rápido podremos avanzar durante el mantenimiento del software.
Dicho esto, me gusta separar las funciones de big en otras más pequeñas. Pero lo hago hasta un punto donde una clase puede tener más de cinco de ellos solo para servir a un método público. Ahora multiplique cinco métodos privados por cinco públicos, y obtendrá alrededor de veinticinco métodos ocultos que probablemente solo serán llamados una vez por esos públicos.
Claro, ahora es más fácil leer esos métodos públicos, pero no puedo evitar pensar que tener demasiadas funciones es una mala práctica.
[Edit◆
La gente me ha estado preguntando por qué creo que tener demasiadas funciones es una mala práctica.
La respuesta simple: es una sensación visceral.
Por un poco, mi creencia no está respaldada por ninguna hora de experiencia en ingeniería de software. Es solo una incertidumbre que me dio un "bloqueo de escritor", pero para un programador.
En el pasado, solo he estado programando proyectos personales. Es solo recientemente que me mudé a proyectos basados en equipos. Ahora, quiero asegurarme de que otros puedan leer y entender mi código.
No estaba seguro de qué mejorará la legibilidad. Por un lado, estaba pensando en separar una función grande en otra más pequeña con nombres inteligibles. Pero había otra cara de mí que decía que solo era redundante.
Por lo tanto, estoy pidiendo que esto me ilumine para elegir el camino correcto.
[Edit◆
A continuación, incluí dos versiones de cómo podría resolver mi problema. El primero lo resuelve al no separar grandes trozos de código. El segundo hace cosas separadas.
Primera versión:
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 versión:
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");
}
En los ejemplos anteriores, este último llama a una función que solo se usará una vez durante todo el tiempo de ejecución del programa.
Nota: el código anterior está generalizado, pero es de la misma naturaleza que mi problema.
Ahora, aquí está mi pregunta: ¿cuál? ¿Elijo el primero o el segundo?