Código perfecto: la importancia de nombrar en la programación

¿Cuál es la parte más difícil del trabajo de un programador?
Esta broma es popular entre los programadores por una razón. La nomenclatura a menudo se convierte en motivo de batallas completas. Y realmente, cómo nombramos nuestras entidades (funciones/variables/constantes/clases/módulos) es importante, ya que la mayor parte del tiempo leemos código en lugar de escribirlo.

En este artículo, analizaré las reglas más comunes aceptadas en la comunidad de desarrolladores. Se utilizará javascript como ejemplo, pero esto no es fundamental. Las recomendaciones son aplicables a todos los lenguajes.
Notación
Antes de hablar sobre la semántica, echemos un vistazo a la sintaxis. Hay varias notaciones de nomenclatura populares:
  • CamelCase: myClass
  • snake_case: my_const
  • kebab-case: my-data
  • La notación húngara es una excepción.
En realidad, hay muchas más, aunque muchas han caído en desuso y no se utilizan o se utilizan muy raramente (al menos, es poco probable que muchos recuerden COBOL-CASE).

Surge la pregunta de qué estilo elegir. La respuesta es muy simple. En cada lenguaje de programación específico, existe un estándar de codificación ampliamente aceptado, a menudo oficial. Este estándar debe ser su guía. Tómese el tiempo para encontrar el estándar para su lenguaje y revisarlo, generalmente se encuentra en GitHub y contiene una gran cantidad de ejemplos ilustrativos.
El tamaño importa
Aquellos que tomaron laboratorios de programación recuerdan que la mayoría de las variables en ellos eran de una sola letra. Un hecho interesante es que en los primeros lenguajes de programación, los identificadores eran de hecho de un solo carácter, como los símbolos en matemáticas. El primer lenguaje que aparentemente comenzó a usar palabras como identificadores fue Lisp. Desde entonces (los años sesenta), ha pasado mucho tiempo y el uso de identificadores de una sola letra se considera inapropiado en el mundo moderno.

Sin embargo, todavía se pueden y deben usar en algunas situaciones. Por lo general, son contadores e índices.
Entidad-Acción
Compare:
bed(); // bad

sleep(); // good
Cuando implementamos una función, describimos una acción, y las acciones en los lenguajes naturales se expresan con verbos. Como resultado, el nombre de la función debe ser un verbo. Es sorprendente que, a pesar de la simplicidad y naturalidad de esta regla, los principiantes a menudo nombran las funciones como sustantivos.

Por lo general, no hay problemas con las variables, nadie usa verbos para nombrarlas, pero por si acaso: el valor es un sustantivo.
Predicados
Recordemos que un predicado es una función de verificación que siempre devuelve true o false.

En la mayoría de los lenguajes, los predicados se prefijan con is.
isEmpty();
isValid();
isBusy();
Pero no todos los lenguajes siguen esta regla. En la mayoría de los lenguajes Lisp, así como en ruby (que lo tomó de Lisp), se utiliza el signo ? al final de la palabra:
empty?
valid?
busy?
Dado que en los lenguajes mencionados no se requieren paréntesis al llamar a una función, esta forma se ve especialmente natural.
Inclusión
No todos los predicados se pueden expresar con is. Por ejemplo, ¿cómo hacer una pregunta si queremos saber si hay un número impar en una lista de números? En tales situaciones, se acostumbra a usar la palabra has:
node.hasChildren();
Cantidad
Si necesita una variable que contenga la cantidad de algo, use la combinación: entidad en plural + count.
symbolsCount
peopleCount
Esta regla es aún más importante en otro caso, es decir, cómo no debe nombrar una variable que representa una cantidad:
errors;
Este tipo de nomenclatura garantiza confusión. La entidad en plural siempre debe representar solo una colección.
Ejemplos
// Normalización de datos
normalizeDomainName('codica.io');

// Extracción de datos
getName(user);
getDomainFromEmail('soporte@codica.io');

// Obtener una matriz de errores
const errores = validate(user);
if (errors.length > 0) {
  // ...
}

// Cálculos
calculateDiff(first, second)

// Permisos
canSwim(user)
canViewProfile(user)
Leer otros artículos de Blog
Lee otros artículos relevantes del mundo de la tecnología y el espíritu empresarial.