Nomenclatura y claridad

Mira este código:

const users = load_data();

for (users) |user| {

    process(user);

}

¿Qué tipo es users? ¿Qué tipo es user?

No se puede saber sin buscar la declaración de load_data(). Sí, tu IDE es muy potente pero ¿y si no siempre lo tienes a mano? ¿Tanto dependes de ese IDE? ¿Y si estás aprendiendo con los playgrounds de los ejemplos de zenofzig.com? ¿Y si usas un editor muy espartano, libre, o debugueas un error a las 3 de la mañana, incluso a través de una sesión ssh?

Convención Zen of Zig

o_

Objeto / struct

a_

Array o lista

m_

Mapa o diccionario

n_, f_

Número entero o float

s_

Cadena de texto ([]u8)

z_

Slice

i_

Iterador

t_

Tupla

Ejemplos

Structs (CamelCase, sin prefijo):

const Player = struct { ... };

const HTTPClient = struct { ... };

Array de números:

for (a_scores) |n_score| {

    print("Puntuación: {}\n", .{n_score});

}

Array de strings:

for (a_player_names) |s_name| {

    print("Nombre: {s}\n", .{s_name});

}

Array de structs:

for (a_players) |o_player| {

    print("HP: {}\n", .{o_player.health});

}

etc.

Loops anidados:

for (a_servers) |t_server| {

    for (t_server.a_databases) |t_db| {

        for (t_db.a_tables) |s_table| {

            //...

        }

    }

}

Ventajas

Búsquedas más precisas:

$ rg "a_items"    # Solo arrays llamados items

$ rg "n_count"    # Solo contadores

Code review sin IDE:

En git o en un log, el prefijo ya te dice qué es cada cosa. Cualquier editor simple vale.

Prevención de errores:

print("{s}\n", .{n_score});  // ← Error obvio: n_ no es string

Onboarding rápido:

Un nuevo desarrollador entiende el código sin mirar las declaraciones previas.

¿Es obligatorio?

No. Es una herramienta de Zen of Zig. No es una regla del lenguaje Zig.

Puedes usarla si te sirve y cuándo te sirva.

¿Cuándo usarla?
¿Cuándo no usarla?
La realidad

La mayor parte de los programadores no escriben librerías públicas. Suelen crear:

Para este tipo de actividades comunes, le puedes dar una oportunidad:

Los prefijos comunican la intención, no solo el tipo. Es solo una herramienta más.


Introducción
Primeros pasos
© 2025 Zen of Zig