terminal

codeando_simple

terminal

menú

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash -- cat clean-code-naming.md
guest@codeandosimple: ~/blog/clean-code $ cat naming-stories.md

NOMBRES QUE CUENTAN HISTORIAS_

// "El nombre de una variable, función o clase, debería responder todas las grandes preguntas." - Robert C. Martin

Elegir nombres es la tarea más frecuente en la programación. Nombramos variables, funciones, argumentos, clases y paquetes. Lo hacemos tan seguido que a veces olvidamos lo crítico que es para la supervivencia de nuestro código.

Un buen nombre debe revelar la intención. Si un nombre requiere un comentario para explicar lo que hace, entonces el nombre ha fallado.

# 1. Revelar la Intención

El nombre debe decirnos por qué existe, qué hace y cómo se usa. Si tenemos que ir a buscar la definición para entenderlo, algo anda mal.

Ejemplo:

// MAL

$d; // días transcurridos

// BIEN

$diasDesdeLaCreacion;

# 2. Evitar la Desinformación

Evita palabras cuyo significado se aleje de la intención original. No llames listaDeCuentas a un grupo de cuentas si en realidad no es una estructura de tipo Lista. Simplemente usa cuentas.

# 3. Distinciones con Sentido

Si tienes dos variables con nombres casi idénticos como InfoUsuario y DatosUsuario, ¿cómo sabe el programador cuál usar? Son palabras ruidosas que no añaden información real.

Lo mismo ocurre con ProductObject o ProductData. Si Product ya es un objeto, ¿por qué añadir la palabra "Object"? No aportes ruido, aporta claridad.

# 4. Evitar Codificaciones (Notación Húngara)

En el pasado, los programadores añadían el tipo de dato al nombre (ej. sNombre para string, iEdad para entero). Hoy en día, con los IDEs modernos y lenguajes tipados, esto es **ruido innecesario**.

Evita también los prefijos de miembros de clase como m_nombre. Tus clases deberían ser lo suficientemente pequeñas como para no necesitarlos.

# 5. Una palabra por concepto

Elige una palabra para cada concepto abstracto y mantenla. Es confuso tener fetch en una clase, retrieve en otra y get en una tercera para la misma operación. Decide cuál usar y sé consistente en todo el proyecto.

# 6. Contexto Significativo vs Redundante

No añadas contexto innecesario. Si tienes una clase llamada User, no llames a su campo userName, simplemente llámalo name. Al usarlo verás $user->name, lo cual es perfectamente claro.

Nota: Los nombres cortos son mejores que los largos, siempre y cuando sean claros dentro de su contexto.

Un Ejemplo Real: Evolución

// NIVEL 1: Código Criptográfico (Malo)

function get_it($l) {
    $res = [];
    foreach($l as $x) {
        if($x[0] == 4) $res[] = $x;
    }
    return $res;
}

¿Qué es $l? ¿Por qué comparamos con 4? ¿Qué devuelve $res?

// NIVEL 2: Código que Cuenta una Historia (Limpio)

function getFlaggedCells($gameBoard) {
    $flaggedCells = [];
    foreach($gameBoard as $cell) {
        if($cell->isFlagged()) $flaggedCells[] = $cell;
    }
    return $flaggedCells;
}

Ahora sabemos que estamos trabajando con un tablero de juego y buscando celdas marcadas.

record_voice_over Nombres Pronunciables

Si no puedes discutirlo en una reunión sin parecer un robot escupiendo acrónimos, cambia el nombre.

search Fácil de Buscar

Las variables de una sola letra (como $e) son imposibles de encontrar en un proyecto grande.

category Clases = Sustantivos

Las clases deben ser nombres o frases de sustantivos (Customer, WikiPage, Account).

settings Métodos = Verbos

Las funciones deben tener nombres de verbos o frases de verbos (postPayment, deletePage, save).

Conclusión

Elegir buenos nombres requiere tiempo, pero ahorra mucho más tiempo a largo plazo. Tu código debe leerse como una historia bien escrita. Cuando los nombres cuentan historias, el equipo se comunica mejor y el mantenimiento deja de ser una pesadilla.

Misión de hoy

// Abre tu proyecto actual, busca una variable con nombre genérico ($data, $obj, $temp) y cámbiala por un nombre que cuente su historia.