Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Regla 0x0105h: Los nombres de funciones deben usar snake_case estricto en minúsculas

Nomenclatura e identificadores (0x01XX)

Universidad Nacional de Río Negro

0x0105h: Los nombres de funciones deben usar snake_case estricto en minúsculas

Enunciado normativo

DEBE nombrarse toda función en snake_case estricto, solo minúsculas y guiones bajos. NO DEBE mezclarse camelCase ni PascalCase.

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 consecuenciaEfecto concreto
CompilaciónNinguna: la capitalización es indiferente para el lenguaje.
EnlazadoNombres que difieren solo en mayúsculas generan símbolos distintos.
LegibilidadEl lector no reconoce a simple vista si un identificador es función.
MantenibilidadBuscar y reemplazar se complica con variantes de capitalización.
ConsistenciaConviven 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

Cómo detectarla

HerramientaComandoSeñal
Revisión manualMayúsculas en el nombre de una función.
gaffgaff check archivo.cReglas 0x0105h y 0x2009h.
grepgrep -nP '^\w+\s+[a-z]*[A-Z]' archivo.cPosibles firmas en camelCase.

Checklist de autocontrol

Reglas relacionadas