¿Que es eso de Clean Code?

La primera vez que oí hablar de Clean Code fue en una charla de Codemotion 2016.

Realmente me impactó, nunca habia oido hablar de tal concepto, aunque claro, tampoco hay que tomarse muy en cuenta mis sorpresas, porque soy una newie total en este mundillo. Me gustó la charla.

Segunda vez que oigo hablar de Clean Code fue en el T3chFest 2017, en esta asistía como oyente presencial y de nuevo, me volvió a enganchar el tema.

Finalmente me he hecho con una copia del libro original, publicado en 2008 y ahí ando, venga a leer.
Los conceptos generales, las ideas, se pueden aplicar facilmente a todos los lenguajes de programación PERO está especialmente enfocado a la programación orientada a objetos y ahí me pierdo un poco.
Total, que he estado googleando a ver si había algo más enfocado en Bash y claro que lo hay.

Clean Code para bash scripting

Mañana en cuanto llegue al curro, me pongo a probar cambios de código como loca..en pre, en pre, juas!
Voy a empezar practicando con lo que llaman bash strict mode, que se activa añadiendo set -eo pipefail al principio del script, debajo del intérprete.

#!/bin/bash
set -euo pipefail
IFS=$'\n\t'

Desde luego que vale la pena echar un vistazo al blog de Aaron maxwell si quieres profundizar sobre el tema del strict mode.

Sólo por dejar algunas pinceladas.

set -e : indica al intérprete que salga del scritpt si algún comando tiene como exit !=0
set -o: indica al intérprete que salga del scritpt si existen variables sin previa definición (excepto $* y$@)
set -o pipefail: previene errores cuando pasamos argumentos a otro comando via pipeline.

Como habeis visto, también he añadido un cambio en IFS.

IFS=$'\n\t' : evita que bash divida variables de más de una palabra. Sólo dividirá variables/argumentos cuando encuentre \n o \t, no cuando existan espacios.

Al activar estas opciones, aparecen efectos secundarios…¿¿¿Cómo que mi script no puede salir con un exit 2??? no preocuparse, casi todo tienen fácil solución.

A partir de hoy voy a mirar el código con otros ojos…