Hice algunas búsquedas aquí y no he encontrado nada como esto, así que voy a seguir adelante y preguntar. Esto es más acerca de la semántica que una pregunta de programación real. Actualmente estoy escribiendo algo en C++ pero el lenguaje en realidad no importa.¿cuán corto debe ser una función?
Soy consciente de que es una buena práctica de programación mantener tus funciones/métodos lo más cortos posible. Sin embargo, ¿cómo sabes realmente si una función es demasiado larga? Alternativamente, ¿es posible romper las funciones demasiado?
El primer lenguaje de programación que aprendí (aparte de Applesoft BASIC, que no cuenta ...) fue el lenguaje de ensamblaje 6502, donde la velocidad y la optimización lo son todo. En los casos en que unos pocos recuentos de ciclos arruinan el tiempo de todo su programa, a menudo es mejor establecer una ubicación de memoria o registrarse directamente en lugar de saltar a otra subrutina. La primera operación podría tomar 3 o 4 ciclos, mientras que, en conjunto, la última podría tomar dos o tres veces más.
Aunque me doy cuenta de que hoy en día, si tuviera que mencionar los recuentos de ciclo a algunos programadores, me darían una mirada en blanco, es un hábito difícil de romper.
En concreto, supongamos que (de nuevo usando C++) tenemos un método de clase privada que es algo así como lo siguiente:
int Foo::do_stuff(int x) {
this->x = x;
// various other operations on x
this->y = this->x;
}
he visto algunos argumentos que, por lo menos, cada conjunto de operaciones deberían ser su propia función. Por ejemplo, do_stuff() debería en teoría nombrarse a set_x (int x), se debería escribir una función separada para el conjunto de operaciones realizadas en el miembro x de la clase, y se debería escribir una tercera función para asignar el valor final del miembro de la clase x a la clase miembro y. Pero he visto otros argumentos de que CADA operación debería tener su propia función.
Para mí, esto simplemente parece incorrecto. Una vez más, estoy mirando las cosas desde una perspectiva interna; cada llamada a método está presionando una dirección en la pila, realizando sus operaciones y luego regresando de la subrutina. Esto simplemente parece una gran sobrecarga para algo relativamente simple.
¿Existe una mejor práctica para este tipo de cosas o es más a juicio individual?
Gracias, esto es definitivamente útil. C++ no es de ninguna manera mi primer lenguaje no ensamblador, pero dado que nunca tuve entrenamiento formal en nada, pensé que sería mejor obtener retroalimentación sobre las prácticas de codificación. – xobicvap
+1 por decir que no debe preocuparse por los ciclos hasta que sea un problema. La optimización prematura es la fuente de todos los males. – riwalk