DEV Community

Miguel Ángel Sánchez Chordi
Miguel Ángel Sánchez Chordi

Posted on

Cláusulas de Guarda

Las cláusulas de guarda son un sencillo método que nos permite hacer nuestro código más leíble, más semántico y con menor nivel de identación.

Una buena forma de detectar estos refactors, es buscar siempre estructuras if-else que comprueben una condición para ejecutar el código principal, y en caso de no cumplirse, lanzar un error o una excepción.

Seguro que más de una vez nos hemos encontrado con un bloque de código como este:

En el método setSpeed podemos ver una construcción if-else que hace una comprobación, y en caso de pasarla, ejecuta una acción de asignar un valor. En este caso es una acción muy simple, pero podría requerir de más líneas y tendríamos un bloque de código bastante grande dentro del if y una única línea en el else, que además quedaría debajo del todo, dificultando su lectura.

Este es un caso típico que puede transformarse en una cláusula de guarda y aplicar un refactor Extract Method.

Para conseguir esto, lo primero es dar la vuelta al if, negando la condición y eliminando el else:

Aquí podemos apreciar que, ya de entrada:

  • Hemos eliminado un nivel de identación en la asignación.

  • El else ha desparecido ya que resultan innecesario, en caso de lanzar la excepción la asignación nunca se realizará.

A pesar de ello, el if sigue siendo “molesto”, así que aplicaremos el refactor de la cláusula de guarda extrayendo el if a un método privado de nuestra clase:

Como se puede ver, hemos movido el código del if a un método privado. Siguiendo los principios de Clean Code, hemos puesto el método privado justo debajo del primer método que hace uso de él.

El resultado final, a la vista queda, es un código mucho más simple, sencillo de leer y con menor nivel de identación.

Hasta pronto!

Top comments (0)