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 0x000Eh: Prohibición de espacios en blanco internos inmediatamente tras '(' o antes de ')'

Sintaxis y formato visual (0x00XX)

Universidad Nacional de Río Negro

0x000Eh: Prohibición de espacios en blanco internos inmediatamente tras ‘(’ o antes de ‘)’

Enunciado normativo

NO DEBE dejarse espacio en blanco inmediatamente después de ( ni inmediatamente antes de ), ni en expresiones, ni en condiciones, ni en invocaciones de función.

Los paréntesis abrazan su contenido sin aire interior.

¿Por qué existe esta regla?

El problema

Los paréntesis delimitan una subexpresión. Un espacio interior (if ( x > 0 )) aleja visualmente el contenido del delimitador y hace que el paréntesis parezca flotar. En llamadas de función separa el nombre del primer argumento y el último del cierre, rompiendo la lectura de la lista.

La forma (x) mantiene el contenido pegado a los delimitadores y reserva el espacio para el exterior, que es donde cumple una función (por ejemplo, entre if y ().

Consecuencias de violarla

Tipo de consecuenciaEfecto concreto
CompilaciónNinguna: el espacio interior es irrelevante (§6.4).
LegibilidadEl paréntesis parece desconectado de su contenido.
ConsistenciaConvive (x) con ( x ) en el mismo archivo.
AmbigüedadUn espacio antes de ) puede confundirse con un argumento faltante.
MantenibilidadEl ruido de espaciado complica los diff.

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

El estándar usa los paréntesis como tokens de agrupación y de llamada (§6.5.1, §6.5.2.2) y no impone espaciado. La cátedra prohíbe el espacio interior para que la agrupación se vea inmediata, en coherencia con 0x0003h: Un espacio antes y después de cada operador binario (que sí exige espacio fuera del paréntesis de control) y con 0x000Dh: Espacio en blanco obligatorio tras la coma separadora en listas y argumentos.

Alcance y excepciones

Aplica a condiciones, expresiones, llamadas, sizeof, conversiones y paréntesis de control. El espacio entre una palabra clave y el paréntesis de apertura sí es obligatorio (0x0011h: Validador de espaciado estricto en sentencias de control). En un cast, (int) x lleva el espacio después del cierre, nunca dentro.

Ejemplos exhaustivos

❌ Contraejemplo 1 — Condición con aire interior

if ( x > 0 ) {
    foo( a, b );
}

Por qué falla: el espacio interior aleja el contenido de los paréntesis y se suma al estilo K&R de la llave (0x0007h: Las llaves deben ubicarse en líneas independientes según el estilo Allman), volviendo la línea ilegible.

❌ Contraejemplo 2 — Llamada con argumentos separados del delimitador

resultado = sumar( monto , tasa );

Por qué falla: espacios internos en ambos extremos, además de un espacio antes de la coma (0x000Ah: Prohibición de espacios en blanco antes de separadores de sintaxis (; y ,)); la lista de argumentos se ve desarmada.

✅ Ejemplo conforme 1 — Paréntesis ajustados

if (x > 0)
{
    foo(a, b);
}

Justificación: el espacio existe entre if y (, pero no dentro del paréntesis; el contenido queda abrazado por los delimitadores.

✅ Ejemplo conforme 2 — Cast y sizeof

double promedio = (double)suma / (double)cantidad;
size_t bytes = sizeof(int) * cantidad;

Justificación: el cast y sizeof escriben sus paréntesis ajustados, sin un espacio interior que sugiera otro contenido.

⚠️ Casos límite

Cómo detectarla

HerramientaComandoSeñal
gaffgaff check archivo.c / gaff fix archivo.cEspacio tras ( o antes de ).
grepgrep -nE '\(\s+|\s+\)' archivo.cParéntesis con aire interior.
clang-formatclang-format --dry-run archivo.cAjuste del espaciado interno.

Checklist de autocontrol

Reglas relacionadas