"Primero hazlo, despu茅s hazlo bien y luego hazlo mejor." 鉁嶐煆 Addy Osmani

He escogido esta frase para empezar porque me siento completamente representado. Casi nunca he hecho nada bien a la primera.

Pero se empieza por hacer algo. Ya vendr谩 el tiempo de corregirlo. Y cu谩ndo est茅 bien ser谩 el momento de mejorarlo.

Este es un ciclo sin fin. Hacer, corregir mejorar. En este curso hablamos de la 煤ltima parte, de la mejora de lo correcto.

Hacer las cosas bien es lo m铆nimo, es lo que se espera de cualquier profesional. Si se hacen mal te pedir谩n que las corrijas o te pedir谩n que te apartes.

Si contin煤as en este negocio es porque lo haces bien. Pero puedes hacerlo mejor.

Tu c贸digo es mejorable; y el m铆o tambi茅n. 馃槼

As铆 pues debemos tener claro que todo c贸digo es mejorable. No es cuesti贸n de humildad o arrogancia. Es una cuesti贸n pr谩ctica.

Si miras hacia atr谩s y ves el c贸digo que escribiste hace unos meses, seguro que se te ocurren mejoras. Aunque lo hubieras hecho muy bien, apuesto a que en estos meses has aprendido mejores maneras de hacerlo. Y si no ha sido as铆. Ahora va a serlo.

A ese c贸digo mejorable le decimos que... huele mal. 馃あ

Para no hablar en t茅rminos de bien o mal, la industria ha adoptado los sin贸nimos sucio y limpio. Y continuando con la met谩fora decimos que el c贸digo sucio huele mal.

Nuestro trabajo ser谩 limpiar ese c贸digo para eliminar los malos olores. Parque hacerle la vida m谩s agradable al siguiente lector. Que con frecuencia ser谩s t煤.

Perdone pero... le huele el c贸digo

Perdone, le huele el c贸digo.

馃 Con el tiempo empeora

El software de hoy exige mantenimiento futuro.

El software es la parte moldeable de un sistema. En contraposici贸n con la rigidez del hardware, creamos software con la intenci贸n de que pueda cambiar con el tiempo. Y este es un concepto crucial.

Escribimos en software aquello que sabemos que va a cambiar y que por tanto no merece la pena esculpir en hardware. Y si sabemos que va a cambiar, es mejor escribirlo de forma que sea sencillo hacerlo, 驴no crees?

Con el paso del tiempo, digamos que el olor va a peor.

Es como si se pudriese. Los malos olores del c贸digo son dificultades para su entendimiento y modificaci贸n. Y el entendimiento de cualquier c贸digo se desvanece en cuanto te levantas de la silla.

Cuando programas, te sumerges de tal forma en el problema que normalmente la soluci贸n generada es compleja y s贸lo entendible en ese momento de concentraci贸n. Puede que en ese momento sea evidente, pero tiene que serlo tambi茅n en el futuro. La intenci贸n tiene que quedar clara.

En peor situaci贸n est谩s si el c贸digo putrefacto no es obra tuya. No ser谩 tu basura pero en cualquier caso, habr谩 que limpiarlo. 驴O prefieres vivir con el s铆ndrome de Diogenes de otro? Perm铆teme este video para decirte lo mismo con algo de humor.

馃摵 馃槀 驴Lo he puesto yo? 驴Estaba aqu铆? ...

馃拡 Principios de mejora

El hacer bien el c贸digo se apoya en la correcci贸n formal que te ofrecen compiladores, editores u otras herramientas. El hacerlo correctamente se demuestra pasando tests autom谩ticos y con la validaci贸n por parte de los usuarios. Pero, 驴C贸mo se eval煤an las mejoras?. Son cuesti贸n de dise帽o. Es algo interno. Es algo que s贸lo vemos t煤 y yo.

馃泚 Toca limpiar el c贸digo pero no de cualquier manera, para no malgastar el tiempo. A lo largo del tutorial ver谩s t茅cnicas, m茅tricas y consejos que seguir谩n estos Principios de Limpieza que consideraremos una inversi贸n rentable de nuestro tiempo:

1锔忊儯. Mostrar la intenci贸n y ocultar los detalles.

2锔忊儯. Evitar la globalizaci贸n y el acoplamiento.

3锔忊儯. Separar responsabilidades.

4锔忊儯. Don't Repeat Yourself (DRY)

... and last but no least ...

5锔忊儯. Keep It Simple, (not) Stupid (KISS)

Los primeros cuatro principios producen mejoras en el c贸digo, a costa de un esfuerzo. Puedes valorar si merece o no la pena. Pero, lo que no tendr铆a sentido es que el por haberlo aplicado acabemos con c贸digo m谩s dif铆cil de leer.

Si lo que queremos es que el c贸digo se entienda, entonces nunca jam谩s debemos complicarlo. Escoge la opci贸n m谩s sencilla siempre vez que puedas. Ya el universo se encargar谩 de aportar complejidad.

"Cualquier c贸digo tuyo que no hayas mirado 煤ltimamente, es como si lo hubiese escrito otro." 鉁嶐煆 Ley de Eagleson