son - tipos de funciones en c
¿Poner nombre de parámetros en prototipos de función C? (3)
Al declarar funciones en C, debe establecer un prototipo en el que no necesite escribir el nombre de los parámetros. Solo con su tipo es suficiente.
void foo(int, char);
Mi pregunta es, ¿es una buena práctica incluir también nombres de parámetros?
Algunos IDE y editores extraerán la información del prototipo de los archivos de encabezado y proporcionarán la información de los parámetros como sugerencias mientras se escribe. Si los nombres están disponibles, eso ayuda a escribir el código más rápido (y puede ayudar a evitar algunos errores).
Definitivamente recomiendo incluir los nombres de los parámetros. Si está escribiendo una biblioteca, es ciertamente útil para aquellos que usarán su biblioteca para poder deducir lo que hace una función desde su prototipo en sus archivos de encabezado. Considere memcpy
por ejemplo. Sin los nombres de los parámetros, se perdería saber cuál es el origen y cuál es el objetivo. Finalmente, es más fácil incluir los nombres que eliminarlos cuando copia la definición de su función para convertirla en un prototipo. Si mantiene los nombres, solo necesita agregar un punto y coma al final.
Sí, se considera una buena práctica nombrar los argumentos incluso en los prototipos.
Por lo general, tendrá todos sus prototipos en el archivo de encabezado, y el encabezado puede ser lo único que sus usuarios puedan inspeccionar. Por lo tanto, tener nombres de argumentos significativos es el primer nivel de documentación para su API.
Del mismo modo, los comentarios sobre lo que hacen las funciones (no cómo se implementan, por supuesto) deben ir en el encabezado, junto con sus prototipos.
¡Un archivo de encabezado bien escrito puede ser la parte más importante de su biblioteca!
Como curiosidad, la constancia de los argumentos es un detalle de la implementación. Entonces, si no muta una variable de argumento en su implementación, solo coloque la const
en la implementación:
/* Header file */
/* Computes a thingamajig with given base
* in the given number of steps.
* Returns half the thingamajig, or -1 on error.
*/
int super_compute(int base, int steps);
/* implementation file */
#include "theheader.h"
int super_compute(const int base, int steps)
{
int b = 2 * base;
while (--steps) { b /= 8; } /* no need for a local variable :-) */
return -1;
}