Entiendo la importancia de un código bien documentado. Pero también entiendo la importancia del código autodocumentado . Cuanto más fácil sea leer visualmente una función en particular, más rápido podremos avanzar durante el mantenimiento del software.
Dicho esto, me gusta separar las funciones grandes en otras más pequeñas. Pero lo hago hasta el punto en que una clase puede tener más de cinco de ellos solo para servir 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 serán llamados solo 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.
[Editar]
La gente me ha preguntado por qué creo que tener demasiadas funciones es una mala práctica.
La respuesta simple: es un presentimiento.
Mi creencia no está, ni por un momento, respaldada por ninguna hora de experiencia en ingeniería de software. Es solo una incertidumbre que me dio un "bloqueo del escritor", pero para un programador.
En el pasado, solo he estado programando proyectos personales. Hace poco me mudé a proyectos basados en equipo. Ahora, quiero asegurarme de que otros puedan leer y comprender mi código.
No estaba seguro de qué mejorará la legibilidad. Por un lado, estaba pensando en separar una función grande en otras más pequeñas con nombres inteligibles. Pero había otro lado de mí que decía que era redundante.
Entonces, estoy pidiendo esto para iluminarme a fin de elegir el camino correcto.
[Editar]
A continuación, incluí dos versiones de cómo podría resolver mi problema. El primero lo resuelve al no separar grandes fragmentos 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 utilizará 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?