Regla 0x0105h: Los nombres de funciones deben usar snake_case estricto en minúsculas
Nomenclatura e identificadores (0x01XX)
0x0105h: Los nombres de funciones deben usar snake_case estricto en minúsculas¶
Enunciado normativo¶
DEBE nombrarse toda función en
snake_caseestricto, solo minúsculas y guiones bajos. NO DEBE mezclarsecamelCaseniPascalCase.
La convención vale para funciones públicas, privadas (static) y
declaraciones anticipadas.
¿Por qué existe esta regla?¶
El problema¶
El nombre de una función es su interfaz. Si cada módulo usa un estilo
distinto, el lector no puede anticipar si calcularTotal, CalcularTotal y
calcular_total son tres funciones o tres formas de escribir la misma. El
estilo snake_case coincide con la biblioteca estándar de C (memcpy,
strncpy) y con la mayoría del código de sistemas.
La uniformidad también permite distinguir categorías: funciones y variables
en minúsculas, constantes en mayúsculas, tipos con sufijo _t.
Consecuencias de violarla¶
| Tipo de consecuencia | Efecto concreto |
|---|---|
| Compilación | Ninguna: la capitalización es indiferente para el lenguaje. |
| Enlazado | Nombres que difieren solo en mayúsculas generan símbolos distintos. |
| Legibilidad | El lector no reconoce a simple vista si un identificador es función. |
| Mantenibilidad | Buscar y reemplazar se complica con variantes de capitalización. |
| Consistencia | Conviven estilos en la misma unidad de traducción. |
Fundamento en el estándar y en la cátedra¶
El estándar exige que los identificadores comiencen con letra o guion bajo
(§6.4.2), sin restringir mayúsculas. La cátedra fija snake_case para
funciones y alinea esta regla con 0x0102h: Los argumentos de función y las variables locales deben usar snake_case en minúsculas (variables) y
0x2009h: Los nombres de funciones y procedimientos deben usar snake_case en minúsculas (nomenclatura de procedimientos).
Alcance y excepciones¶
Cubre definiciones, prototipos y punteros a función. La función main queda
exceptuada porque su nombre está fijado por el estándar. Los nombres de
funciones de librerías externas no se modifican.
Ejemplos exhaustivos¶
❌ Contraejemplo 1 — camelCase en una firma¶
int procesarVector(int *vec, size_t n);Por qué falla: procesarVector mezcla minúsculas y una mayúscula interna,
un estilo que la cátedra reserva para nada.
❌ Contraejemplo 2 — PascalCase y mayúscula inicial¶
void Imprimir(void);
void CalcularDatos(int a, int b);Por qué falla: la mayúscula inicial sugiere un tipo o una constante, no una
función, y contradice la convención de snake_case.
✅ Ejemplo conforme 1 — Prototipo en snake_case¶
int procesar_vector(int *vec, size_t n);Justificación: todas las palabras en minúscula y separadas por guion bajo; el nombre describe la acción.
✅ Ejemplo conforme 2 — Función privada y auxiliar¶
static bool edad_valida(int edad)
{
return edad >= 0 && edad <= EDAD_MAXIMA;
}
static double calcular_promedio(const int edades[], size_t cantidad)
{
return 0.0;
}Justificación: incluso las funciones de uso interno siguen la misma
convención, de modo que static no introduce un estilo aparte.
⚠️ Casos límite¶
Punteros a función:
int (*comparar)(const void *, const void *)usasnake_casepara el nombre del puntero.API de terceros:
fopen,strtokconservan su nombre; no se renombran.main: siempre en minúsculas, es el único nombre fijado por el estándar.
Cómo detectarla¶
| Herramienta | Comando | Señal |
|---|---|---|
| Revisión manual | — | Mayúsculas en el nombre de una función. |
gaff | gaff check archivo.c | Reglas 0x0105h y 0x2009h. |
grep | grep -nP '^\w+\s+[a-z]*[A-Z]' archivo.c | Posibles firmas en camelCase. |
Checklist de autocontrol¶
¿Todas las funciones están en minúsculas con guiones bajos?
¿Incluí las funciones
staticy los prototipos?¿Evité
camelCaseyPascalCase?¿Diferencié funciones (minúsculas) de constantes (mayúsculas) y tipos (
_t)?
Reglas relacionadas¶
0x0102h: Los argumentos de función y las variables locales deben usar snake_case en minúsculas — variables y argumentos en
snake_case.0x0103h: Las constantes (const o #define) deben nombrarse en MAYUSCULAS_SNAKE_CASE — constantes en
MAYUSCULAS_SNAKE_CASE.0x2009h: Los nombres de funciones y procedimientos deben usar snake_case en minúsculas — nomenclatura de funciones y procedimientos.
0x3004h: Utilizá typedef para definir tipos de estructuras con el sufijo _t — tipos con sufijo
_t.0x010Eh: Prescindí de identificadores genéricos con sufijo numérico o afijos (numero1, num_1, n_a, a_n) — evitar nombres genéricos numerados.