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 0x0104h: Los nombres de los archivos deben usar snake_case en minúsculas (sin espacios)

Nomenclatura e identificadores (0x01XX)

Universidad Nacional de Río Negro

0x0104h: Los nombres de los archivos deben usar snake_case en minúsculas (sin espacios)

Enunciado normativo

DEBE nombrarse los archivos fuente y de cabecera en snake_case con minúsculas, sin espacios ni caracteres especiales (lista_enlazada.c, arbol_binario.h). NO DEBE usarse mayúsculas, espacios ni guiones.

Esta regla alcanza también a los nombres citados en los #include.

¿Por qué existe esta regla?

El problema

En Linux el sistema de archivos distingue mayúsculas de minúsculas. Un archivo Lista.h no es el mismo que lista.h, de modo que un #include "Lista.h" puede fallar en una máquina y funcionar en otra según cómo se haya creado el archivo. Los espacios en los nombres obligan a escapar rutas en la terminal, en los Makefile y en los scripts de corrección.

El nombre del archivo también es un contrato: si modulo.h y modulo.c siguen el mismo patrón, el módulo se reconoce a simple vista.

Consecuencias de violarla

Tipo de consecuenciaEfecto concreto
Compilación#include "Lista.h" no encuentra lista.h en sistemas case-sensitive.
EnlazadoUn archivo mal nombrado rompe el Makefile o el script de entrega.
PortabilidadUn proyecto que compila en Windows puede fallar en Linux.
AutomatizaciónLos espacios exigen comillas y escapes en cada comando.
ConsistenciaMódulos con nombres dispares dificultan ubicar los archivos.

Fundamento en el estándar y en la cátedra

El estándar no nombra archivos salvo por la forma del #include (§6.10.2), que queda a cargo de la implementación. La cátedra fija snake_case minúsculas para que los #include, los Makefile y los scripts de corrección coincidan sin ambigüedad.

Alcance y excepciones

Aplica a archivos .c, .h y a cualquier otro fuente del proyecto (Makefile es el nombre canónico aceptado). Las extensiones van en minúsculas: .c y .h, no .C ni .H. Las herramientas de terceros conservan sus nombres originales.

Ejemplos exhaustivos

❌ Contraejemplo 1 — Mayúsculas y espacios

Lista Enlazada.c
ArbolBinario.H

Por qué falla: el espacio obliga a citar la ruta en la terminal y las mayúsculas impiden que #include "lista_enlazada.h" lo encuentre.

❌ Contraejemplo 2 — Guiones en lugar de guiones bajos

mi-archivo.c
pila-dinamica.h

Por qué falla: el guion es válido para el sistema de archivos pero rompe la convención snake_case y además se confunde con el operador - al referirse al nombre desde una macro.

✅ Ejemplo conforme 1 — Nombres canónicos

lista_enlazada.c
arbol_binario.h

Justificación: todos los caracteres son minúsculas o guiones bajos y cada palabra queda separada de forma uniforme.

✅ Ejemplo conforme 2 — Coincidencia con el #include

#include "pila_dinamica.h"
#include "pila_dinamica.h"

Justificación: el nombre del archivo coincide exactamente con el del #include, sin depender de mayúsculas ni de la resolución laxa de un sistema de archivos.

⚠️ Casos límite

Cómo detectarla

HerramientaComandoSeñal
lslsMayúsculas, espacios o guiones en los nombres.
gaffgaff check archivo.cNombre de archivo fuera de snake_case.
gccgcc ... -c lista_enlazada.cNo such file or directory por discrepancia de mayúsculas.

Checklist de autocontrol

Reglas relacionadas