Manypeople han discutido sobre el tamaño de la función. Dicen que las funciones en general deberían ser bastante cortas. Las opiniones varían desde algo así como 15 líneas hasta "aproximadamente una pantalla", que hoy probablemente sean alrededor de 40-80 líneas.
Además, las funciones siempre deben cumplir una sola tarea.¿Es una mala práctica tener un método de inicialización largo?
Sin embargo, hay un tipo de función que falla con frecuencia en ambos criterios en mi código: funciones de inicialización.
Por ejemplo, en una aplicación de audio, el hardware/API de audio tiene que ser establecido, los datos de audio tiene que ser convertido a un formato adecuado y el estado del objeto tiene que inicializado correctamente. Estas son claramente tres tareas diferentes y dependiendo de la API esto puede abarcar fácilmente más de 50 líneas.
La cosa con init-funciones es que generalmente sólo se llama una vez, así que no hay necesidad de volver a utilizar cualquiera de los componentes. ¿Todavía los dividiría en varias funciones más pequeñas consideraría que las funciones de inicialización son buenas?
1 para 'assert()' solo. – ndim
+1: "no hay necesidad de volver a utilizar ninguno de los componentes". La reutilización no es el problema. Escribir algo que pueda ser entendido y mantenido por otras personas es muchísimo más importante. –
Recuerdo un consejo sobre dejar los identificadores que comienzan con guiones bajos al uso interno del compilador C y evitarlos en los programas. Además, debe marcar esas tres funciones init de una vez como 'estática'. Por una vez, no se usarán fuera del archivo fuente actual. Y como un beneficio adicional, un compilador inteligente verá que solo se los llama una vez, y simplemente insertará el código (en caso de que le preocupe la sobrecarga de llamadas). – ndim