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 0x0101h: Los identificadores deben ser descriptivos

Nomenclatura e identificadores (0x01XX)

Universidad Nacional de Río Negro

0x0101h: Los identificadores deben ser descriptivos

Enunciado normativo

DEBE elegirse nombres de variables, funciones y tipos que describan con precisión su propósito o su rol en el algoritmo. NO DEBE usarse nombres de una sola letra salvo para índices de iteración de alcance mínimo.

Un identificador descriptivo convierte al código en su propia documentación.

¿Por qué existe esta regla?

El problema

Un nombre es una promesa sobre el contenido. a, dato o aux no dicen nada: obligan al lector a rastrear todas las apariciones para deducir qué guardan. Cuanto más corto y genérico el nombre, más grande el rango de valores que parece admitir y mayor la probabilidad de reutilizarlo con un significado distinto, que es la raíz de muchos efectos colaterales.

Nombrar bien es una actividad de diseño: obliga a decidir qué representa la variable y, con eso, a descubrir responsabilidades mezcladas.

Consecuencias de violarla

Tipo de consecuenciaEfecto concreto
CompilaciónNinguna: cualquier nombre legal compila igual.
Bug silenciosoReutilizar tmp para dos conceptos distintos introduce valores cruzados.
MantenibilidadCada lectura exige reconstruir el significado por contexto.
Revisión docenteEl corrector no puede seguir el algoritmo y pierde tiempo deduciéndolo.
DocumentaciónLos comentarios se vuelven obligatorios para suplir lo que el nombre calla.

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

El estándar C11 no impone semántica a los nombres; solo regula su forma (§6.4.2). La cátedra retoma la tradición de código autodescriptivo y exige nombres que resistan la prueba de leer solo la firma. Esta regla es el fundamento cualitativo de 0x010Bh: Proporcionalidad en longitud de identificadores según su alcance, que fija longitudes mínimas según el alcance.

Alcance y excepciones

Cubre variables, funciones, parámetros, campos de struct y typedefs. Los índices de iteración (i, j, k) y contadores locales muy breves (n) se aceptan cuando su alcance son pocas líneas. Coordenadas matemáticas (x, y) y parámetros de fórmulas conocidas también se admiten si el contexto es inequívoco.

Ejemplos exhaustivos

❌ Contraejemplo 1 — Nombre que no dice nada

int a = obtener_precio();
a = a * 1.21;
printf("%d\n", a);

Por qué falla: a podría ser precio, total o impuesto; el lector no sabe si 1.21 es IVA, descuento o inflación.

❌ Contraejemplo 2 — Nombres genéricos numerados

void procesar(int dato1, int dato2, int dato3)
{
    int aux = dato1 + dato2 + dato3;
    printf("%d", aux);
}

Por qué falla: dato1, dato2 y dato3 describen la posición, no el significado; además 0x010Eh: Prescindí de identificadores genéricos con sufijo numérico o afijos (numero1, num_1, n_a, a_n) prohíbe expresamente los sufijos numéricos.

✅ Ejemplo conforme 1 — El nombre revela el rol

int precio_base = obtener_precio();
int precio_con_iva = precio_base * IVA_MAS_UNO;
printf("Total: %d\n", precio_con_iva);

Justificación: cada nombre expone la magnitud y su relación; el cálculo se lee sin comentarios.

✅ Ejemplo conforme 2 — Parámetros con dominio explícito

static double calcular_promedio(const int edades[], size_t cantidad)
{
    double suma = 0.0;

    for (size_t i = 0; i < cantidad; i++)
    {
        suma += (double)edades[i];
    }

    return cantidad > 0 ? suma / (double)cantidad : 0.0;
}

Justificación: edades, cantidad y suma describen el dato, su tamaño y el acumulador; solo i es breve porque es un índice de alcance mínimo.

⚠️ Casos límite

Cómo detectarla

HerramientaComandoSeñal
Revisión manualIdentificadores de una letra fuera de índices o acrónimos crípticos.
gaffgaff check archivo.cReglas de nomenclatura: 0x010Bh, 0x010Eh.
Renombrado en editorSi al renombrar el semántica se aclara, el nombre original era malo.

Checklist de autocontrol

Reglas relacionadas