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 0x000Fh: Prohibición de múltiples espacios en blanco consecutivos dentro de una línea de código

Sintaxis y formato visual (0x00XX)

Universidad Nacional de Río Negro

0x000Fh: Prohibición de múltiples espacios en blanco consecutivos dentro de una línea de código

Enunciado normativo

NO DEBE haber dos o más espacios consecutivos dentro de una línea de código. Solo se exceptúa la sangría inicial que delimita los bloques.

Los elementos de una línea se separan con exactamente un espacio.

¿Por qué existe esta regla?

El problema

Los espacios múltiples son invisibles en un vistazo y por eso suelen quedar como residuo de alineaciones manuales o de ediciones descuidadas. Además de ensuciar los diff, compiten con una práctica extendida que consiste en alinear los signos = con espacios: la cátedra la rechaza porque el ancho de las columnas depende del nombre más largo y cualquier cambio desalinea todo el bloque.

Un solo espacio como separador único hace que el espaciado sea predecible y automáticamente normalizable.

Consecuencias de violarla

Tipo de consecuenciaEfecto concreto
CompilaciónNinguna: los espacios son irrelevantes (§6.4).
LegibilidadLíneas aparentemente iguales difieren en columnas invisibles.
ConsistenciaEl archivo mezcla zonas alineadas a mano y zonas normales.
MantenibilidadCambiar un nombre obliga a reajustar toda la alineación.
Control de versionesEl diff reporta cambios por un espacio de más.

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

El estándar da a los espacios blancos el mismo valor separador (§6.4); no hay razón técnica para duplicarlos. La cátedra fija un único espacio interior para que el formato sea uniforme y para que 0x0008h: Alineación vertical consistente en asignaciones y declaraciones consecutivas regule solo la sangría y no la alineación de columnas.

Alcance y excepciones

Aplica dentro de la línea de código. La sangría al inicio del bloque queda exceptuada de la prohibición pero debe seguir 0x0004h: Cada bloque debe tener una indentación de cuatro espacios respecto a su contenedor y llaves (cuatro espacios por nivel). El contenido de las cadenas literales y los comentarios pueden tener varios espacios si son texto.

Ejemplos exhaustivos

❌ Contraejemplo 1 — Espacios repartidos en toda la expresión

int   total   =   cantidad  *  precio;

Por qué falla: cada operador y operando queda rodeado de espacios extra; la línea tiene el mismo significado que la versión con un solo espacio, pero se ve desprolija y no aporta información.

❌ Contraejemplo 2 — Alineación manual del =

int a       = 1;
int bb      = 2;
int ccc     = 3;

Por qué falla: los espacios múltiples alinean los signos =, pero cualquier cambio de nombre desbarata las columnas; además contradice 0x0008h: Alineación vertical consistente en asignaciones y declaraciones consecutivas, que alinea la sangría, no el operador.

✅ Ejemplo conforme 1 — Un espacio interior

int total = cantidad * precio;

Justificación: cada separador interior es un único espacio; la expresión se lee sin ruido y es estable ante refactorizaciones.

✅ Ejemplo conforme 2 — Sangría correcta y separadores simples

for (size_t i = 0; i < cantidad; i++)
{
    if (valores[i] > mayor)
    {
        mayor = valores[i];
    }
}

Justificación: la sangría inicial usa múltiplos de cuatro y los espacios interiores son siempre uno, de modo que la alineación vertical surge de la indentación y no de espacios manuales.

⚠️ Casos límite

Cómo detectarla

HerramientaComandoSeñal
gaffgaff check archivo.c / gaff fix archivo.cDos o más espacios consecutivos.
grepgrep -nE ' +' archivo.cLíneas con espacios múltiples.
clang-formatclang-format --dry-run archivo.cNormalización del espaciado.

Checklist de autocontrol

Reglas relacionadas