Usar nombres apropiados para variables, funciones, parámetros y demás elementos del código es una de las cosas más importantes para que sea legible y fácilmente entendible. Por ello, vale la pena dedicar tiempo a elegir buenos nombres e, incluso, a renombrar fragmentos existentes que resulten de difícil comprensión.
Lo esencial a la hora de elegir un nombre es que sea intencional, es decir, que al leerlo nos revele la intención de la variable, función, clase o lo que sea que estemos nombrando. El nombre debe responder por qué existe, qué hace y cómo es usada. Si un nombre necesita un comentario explicativo, es que el nombre no es lo suficientemente bueno. A su vez, un nombre no debe incluir pistas falsas. Por ejemplo, no deberíamos llamar a una variable AnimalList
si realmente no es una lista.
Hay que evitar usar nombres que varían en unas pocas letras o, por ejemplo, nombres largos de funciones que solo varían en una palabra. Puede ser difícil diferenciarlos a primera vista y darse cuenta de que se trata de dos funciones diferentes. También complicará la vida a la hora de utilizar asistentes de autocompletado de código si los nombres son parecidos o si queremos encontrarlos con el buscador. Por estos mismos motivos, es importante que los nombres sean legibles para un humano, no una consecución de siglas impronunciables. Tampoco se deben utilizar nombres de una sola letra por norma general (puede ser válido para el contador de algún bucle pequeño), nos complicará su búsqueda si queremos encontrar más apariciones en el repositorio.
Por norma general, las clases y objetos tendrán nombres de sustantivos y los métodos y funciones de verbos. No se deben añadir prefijos o sufijos que no aportan información adicional o que confunden. Por ejemplo, ¿se supone que alguien que lee el código debe saber qué diferencia hay entre Animal
, AnimalObject
y AnimalInfo
?
Cada concepto debe tener su propia nomenclatura. Es confuso encontrar que a la hora de obtener datos se emplean fetch
, retrieve
y get
. Si todas las funciones hacen lo mismo con sus respectivas entidades, debería utilizarse también el mismo verbo. También hay que evitar lo opuesto, no utilizar dos veces el mismo verbo en funciones que hacen cosas distintas.
Está bien utilizar un contexto si éste va a evitar confusiones. Por ejemplo, si vamos a pedir los datos de facturación y los datos de envío a un cliente, tendremos dos nombres de persona, que pueden ser el mismo o no. No está mal añadir un prefijo para saber en el código qué variable corresponde a cada uno. Pero, si no es necesario, vale la pena no añadir prefijos o sufijos que vayan a estar en todas las variables y funciones del código. Como hemos comentado antes, esto nos entorpecerá a la hora de usar herramientas de autocompletado que nos ofrecen sugerencias basándose en el nombre.
Por último, al igual que comentamos en la primera entrada de esta serie, la idea es dejar el código más limpio de lo que lo encontramos, así que no temas en renombrar elementos si eso va a mejorar la comprensión y facilitar el trabajo a futuros desarrolladores. O a ti mismo cuando vuelvas a esas líneas en un tiempo.
Pingback: Clean Code (3): Funciones - Costa Devs
Pingback: Clean Code (4): Comentarios - Costa Devs