Regla 0x0102h: Los argumentos de función y las variables locales deben usar snake_case en minúsculas
Nomenclatura e identificadores (0x01XX)
0x0102h: Los argumentos de función y las variables locales deben usar snake_case en minúsculas¶
Enunciado normativo¶
DEBE nombrarse toda variable local y todo parámetro en
snake_casecon minúsculas y guiones bajos. NO DEBE usarsecamelCase,PascalCaseni mayúsculas sueltas.
La forma uniforme hace predecible la lectura de cualquier identificador.
¿Por qué existe esta regla?¶
El problema¶
C distingue mayúsculas de minúsculas. Si cada estudiante elige su propio
esquema, el código de un compañero o de la cátedra se vuelve un rompecabezas
de convenciones. snake_case es el estilo dominante en el ecosistema de C y
en la biblioteca estándar (strncpy, size_t), por lo que adoptarlo alinea
al estudiante con el lenguaje real.
La distinción de mayúsculas también separa categorías: las minúsculas quedan para valores mutables locales, mientras mayúsculas y sufijos se reservan para constantes y tipos, respectivamente.
Consecuencias de violarla¶
| Tipo de consecuencia | Efecto concreto |
|---|---|
| Compilación | Ninguna: miVariable y mi_variable son identificadores válidos. |
| Legibilidad | Conviven varios esquemas y el archivo pierde cohesión. |
| Mantenibilidad | Las refactorizaciones renombran de forma inconsistente. |
| Colisión | camelCase puede chocar con nombres de librerías o tipos. |
| Revisión docente | Detectar el origen de un identificador cuesta más. |
Fundamento en el estándar y en la cátedra¶
El estándar solo exige que los identificadores comiencen con letra o guion
bajo y continúen con letras, dígitos o guiones bajos (§6.4.2). La cátedra
fija snake_case minúsculas para variables y argumentos, y separa así la
nomenclatura de funciones (0x0105h: Los nombres de funciones deben usar snake_case estricto en minúsculas), constantes (0x0103h: Las constantes (const o #define) deben nombrarse en MAYUSCULAS_SNAKE_CASE) y
tipos (0x3004h: Utilizá typedef para definir tipos de estructuras con el sufijo _t).
Alcance y excepciones¶
Cubre variables locales, parámetros de función y variables de archivo. No rige nombres de constantes, macros, tipos ni funciones, que tienen sus propias reglas. Los índices de iteración cortos siguen en minúsculas y se aceptan por 0x010Bh: Proporcionalidad en longitud de identificadores según su alcance.
Ejemplos exhaustivos¶
❌ Contraejemplo 1 — Firma en camelCase¶
int calcular_promedio(int *vectorNumeros, size_t LongitudTotal);Por qué falla: vectorNumeros combina mayúsculas en medio de la palabra y
LongitudTotal arranca en mayúscula, dos estilos distintos en la misma
firma.
❌ Contraejemplo 2 — Variables locales mezcladas¶
int totalVentas = 0;
int descuento_Aplicado = 0;
int IVA = 21;Por qué falla: convive camelCase, mayúscula suelta y un guion bajo
inconsistente; además IVA parece una constante y no lo es.
✅ Ejemplo conforme 1 — Firma consistente¶
int calcular_promedio(int *vector_numeros, size_t longitud_total);Justificación: cada palabra se separa con guion bajo y todas van en minúscula, de modo que el nombre se lee como una frase.
✅ Ejemplo conforme 2 — Locales coherentes¶
int total_ventas = 0;
int descuento_aplicado = 0;
const int ALICUOTA_IVA = 21;Justificación: las variables mutables usan snake_case y la constante usa
mayúsculas; la categoría de cada valor se distingue a simple vista.
⚠️ Casos límite¶
Acrónimos:
id_clientees preferible aiD_cliente; los acrónimos se escriben en minúscula como una palabra más.Structs ajenos: los campos de una librería externa no se renombran.
main: su nombre está fijado por el estándar y no admite variantes.
Cómo detectarla¶
| Herramienta | Comando | Señal |
|---|---|---|
| Revisión manual | — | Mayúsculas en variables locales o parámetros. |
gaff | gaff check archivo.c | Regla 0x0102h: identificador fuera de snake_case. |
grep | grep -nP '[a-z][A-Z]' archivo.c | Posibles ocurrencias de camelCase. |
Checklist de autocontrol¶
¿Todas las variables locales están en minúsculas con guiones bajos?
¿Los parámetros siguen la misma convención?
¿Reservé las mayúsculas para constantes y macros?
¿Usé minúsculas también en acrónimos?
Reglas relacionadas¶
0x0105h: Los nombres de funciones deben usar snake_case estricto en minúsculas — nombres de función en
snake_caseestricto.0x0103h: Las constantes (const o #define) deben nombrarse en MAYUSCULAS_SNAKE_CASE — constantes en
MAYUSCULAS_SNAKE_CASE.0x0108h: Prohibición de identificadores con caracteres no ASCII (acentos, ñ) — prohibición de caracteres no ASCII en identificadores.
0x010Bh: Proporcionalidad en longitud de identificadores según su alcance — longitud del nombre proporcional a su alcance.
0x010Eh: Prescindí de identificadores genéricos con sufijo numérico o afijos (numero1, num_1, n_a, a_n) — evitar sufijos numéricos y afijos genéricos.