Rimorsoft Online
Blog Foro

Clean code en Javascript


Hemos visto a lo largo de la historia las diferentes definiciones respecto a la palabra programación. Estas a veces generan confusión y aquí buscaremos resolver los diferentes inconvenientes para que lo comprendas mejor.

Programación: Acción de programar.

Programar: Formar programas. Secuencias de instrucciones que sirven para dirigir las operaciones de un computador.

Es obvio que a estas definiciones les hace falta texto para comprenderlo mejor, vamos a completarlo.

Programación: Es crear, componer y organizar instrucciones, estas le indican a una computadora lo que deben hacer. Podemos escribir dichas instrucciones en Javascript, Python o PHP.

Sin embargo, código limpio es el que se escribe con la intención de que otra persona lo entienda y pueda darle mantenimiento.

Para comprender mejor estas definiciones, vamos a usar el lenguaje Javascript.

youtube

Variables en Javascript

Debes escribir código que puedas leer

La idea es proporcionar significado, cualquier cosa debe ser directamente comunicativo. Las variables, los métodos y las clases se deben escogerse a conciencia y con conocimiento.

Var, let y const

En Javascript al momento de declarar variables debemos usar las palabras claves o reservadas var, let y const. Aunque lo ideal sería evitar el uso de elementos con alcances globales, por ende no sería bueno usar a var ya que nuestro enfoque debe ser el de crear en la mayoría de los casos ámbitos de bloques para mantener la intuición y prevenir los comportamientos extraños.

Ejemplo con var.

{
    var message = 'Variable global'
}
        
console.log(message)

// Obtenemos: Variable global

En este ejemplo podemos acceder a la variable message aunque esta se encuentre dentro de un bloque entre llaves. Aquí observamos el concepto de "alcance global" y esto no sucede con las variables definidas como let o const.

Sabemos que var existe, pero usemos let y const para mantener el ámbito de bloque

{
    let message = 'Mensaje leído únicamente desde las llaves'
}
        
console.log(message)

// Obtenemos: Uncaught ReferenceError: message is not defined

La diferencia entre let y const es que al usar una CONSTANTE no podemos cambiar su valor, con esto transmitimos intención y otro programador entenderá el porqué de su uso.

const message = 'No puede cambiar'
		
message = 'Nuevo texto'

// Obtenemos: Uncaught TypeError: Assignment to constant variable

¿Y si no usamos estas palabras reservadas?

Va a funcionar el código, es algo que técnicamente puede hacerse pero no deberíamos hacerlo, la idea inicialmente es indicar si es var, let o const para transmitir el deseo o intención precisamente para deducir un mensaje mas intuitivo.

message = 'Valor'

// Funciona, pero no trabajes así

Código limpio para nombres

Escribe un nombre que otro ser humano pueda pronunciar

Todo en programación debe ser escrito en inglés y debe escribirse correctamente, completo, sin abreviaciones, ni acrónimos, ni caracteres especiales.

Solo es escribir.

currentDate
publicationDate

Tenemos un texto que dice claramente algo, podemos leer "fecha actual" y "fecha de publicación". Al trabajar de esta manera debemos tener en cuenta el uso coherente del texto y nada más, esto solo depende de ti.

Piensa siempre en cómo mejorar la comunicación en el equipo de programación. Algunas veces demoramos en escoger nombres porque buscamos precisión, coherencia y una nomenclatura uniforme.

Estaría mal hablar en un proyecto de clientes, estudiantes y usuarios porque generaría mucha confusión.

getUser()

getUser() sería un método ideal para acceder a la lectura de datos, get y User hablan por si solo, dicen de inmediato que queremos obtener y qué queremos obtener (atento con los acentos).

Código limpio para tipos de datos

Bool

Sabemos que este tipo de datos puede tener únicamente dos valores (verdadero, falso). En este caso en particular una correcta forma de trabajar con ellos es en forma de pregunta, de nuevo, para mejorar la legibilidad y transmitir mayor sentido.

  1. ¿Tiene permisos?
  2. ¿Se puede leer?
  3. ¿Está vacío?
  4. ¿Hay frio?

Estas preguntas darán como respuesta un true o false. Por eso tienen mucha utilidad para los booleanos.

let isEmpty = false
let canRead = false
let hasPermissions = true

Descripción numérica

Esta idea está pensada para elementos que tratamos mediante un listado como una paginación, colección de datos en una tabla y en general elementos numéricos que requieran de una descripción numérica.

let maxUsers = 12
let totalUsers = 48

Array

En todo sistema hacemos uso de un listado de datos que podamos recorrer o iterar, un ejemplo común es consultar una tabla y recorrer dicho resultado para imprimirlo en pantalla. En este caso el consejo es tratarlos con nombres en plural.

const users = ['user 1', 'user 2']

Los declaré como constante porque por lo general obtenemos un listado de datos que no cambiamos, solo lo recorremos, el ejemplo es igual de valido si usamos let.

Funciones

¿Cómo llamar a tus funciones? Sería interesante reflexionar respecto a ello.

Una función representa una acción así que debemos usar términos gramaticales para comprenderlo mejor (como verbo y sustantivo).

  • Verbo: Aquello que expresa una acción.
  • Sustantivo: Algo que existe y es independiente. Puede ser un objeto, sujeto, lugar, etc.

Si mantienes el principio de ser preciso y descriptivo puedes conseguir expresar correctamente el objetivo de una función, por ejemplo:

  1. Crear un articulo.
  2. Validar un usuario.
  3. Enviar un email.

En Javascript sería de la siguiente manera:

createPost() { }
validateUser() { }
sendEmail() { }

Hemos comprobado el uso de verbo y sustantivo.

En funciones de acceso a datos usamos lo que es común: get para obtener, set para alterar, si el resultado esperado es un Bool entonces usamos lo aprendido en dicha sección, trabajamos como si fueran preguntas con is, can, etc.

Clases y objetos

En este caso debe evitarse a toda costa el nombre genérico, por ejemplo: Info, Data, etc. El nombre define la responsabilidad por ello debemos tener cuidado y transmitir directamente lo que queremos solucionar.

En este punto lo correcto es mantener lo aprendido en variables, tipos de datos y funciones.

  1. La clase debe formarse con un sustantivo, por ejemplo User.
  2. En los métodos de la clase podemos mantener lo aprendido en funciones.
  3. En las propiedades también podemos mantener lo aprendido en variables.

Sigamos aprendiendo, escribamos código limpio

Libro de TDD - Lo que debes saber
Compra el libro
TDD lo que debes saber

Newsletter

Únete a más de 4.000+ personas y no te pierdas nunca más de las nuevas clases, tips, tutoriales y más cada semana.

    No enviamos spam. Puedes darte de baja en cualquier momento.