
> Clean code o código limpio es aquel que se ha escrito con la intención de que otra persona (o tú mismo en el futuro) lo entienda.

<div style="margin-bottom: 4em" />

## Responsabilidad

Como profesionales del software, tenemos que ser **responsables de nuestros desarrollos**. Ya sea para una nueva funcionalidad en un producto de una gran compañía, para una web que nos han encargado, una ayuda a un amigo o amiga en su proyecto personal, o si es una contribución en un proyecto Open Source... es nuestra responsabilidad hacerlo bien.

Debemos desarrollar de la mejor manera que **sepamos**. Hay muchas convenciones, patrones y guías de buenas prácticas. Conocerlas y detectar cómo aplicarlas, _y cuando no aplicarlas_, es lo que nos convertirá en [Aresanos/as del Software](https://es.wikipedia.org/wiki/Artesan%C3%ADa_de_software).

<div style="margin-bottom: 4em" />

## Clean JavaScript

[![Clean JavaScript](https://res.cloudinary.com/nucliweb/image/upload/c_scale,dpr_auto,f_auto,q_auto,w_896/v1694444269/joanleon.dev/assets/lean-javascript-codigo-limpio-solid-y-testing/Clean-JavaScript.jpg)](https://softwarecrafters.io/cleancode-solid-testing-js)

Permitidme que os recomiende el libro [**Clean JavaScript**](https://softwarecrafters.io/cleancode-solid-testing-js) de [Miguel A. Gómez](https://twitter.com/sw_crafters). Se trata de un libro que nos ayuda a mejorar la legibilidad de nuestro códido, escribir un código más intuitivo, que lo podamos testear de forma fácil y, lo más importante, tolerante al cambio.

<div style="margin-bottom: 4em" />

## Mi opinión

Es un libro que está bien estructurado, fácil de leer, con ejemplos claros y concisos según el tema que se esté tratando. Todos los ejemplos están disponibles online para que podamos probarlos.

Consta de tres secciones:

1. **Clean Code**: donde nos explica qué es, cómo mejorar el nombrado de variables, las funciones, las clases y comentarios.
2. **Principios SOLID**: aquí hace un repaso a cada uno de los principios, con ejemplos de código. Me ha gustado que empiece por explicar el porqué debemos alejarnos de los principios **STUPID**.
3. **Testing y TDD**: en la última sección del libro, nos habla de los test. Lo hace de una forma muy amena, con ejemplos paso a paso, y llegando a hacer una kata con la metodología [TDD](https://es.wikipedia.org/wiki/Desarrollo_guiado_por_pruebas).

Encontrar un libro donde concocer todos estos principios del desarrollo del software con ejemplos en JavaScript es todo un lujo. A mí me ha ayudado a interiorizar los conceptos.

Una de las cosas que me encanta es que está lleno de referencias, eso ayuda a reforzar el mensaje que está dando Miguel y abre la puerta que podamos investigar más sobre el tema.

Se le nota bastante que tiene preferencia por [TypeScript](https://www.typescriptlang.org/), pero los ejemplos que utiliza son muy intuitivos.

Cierra el libro con la recomendación del libro de un gran amigo y compañero, [Diseño Ágil con TDD](https://www.carlosble.com/libro-tdd/?lang=es) de [Carlos Blé](https://twitter.com/carlosble). El cual tengo listo para su lectura 😊.
