Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
php WordPress

Cómo refactorizar el anidamiento masivo con cláusulas de guarda

Antes de ver el cómo, deberíamos ver el porqué. Y antes de eso, ver un ejemplo de anidamiento masivo para entender el problema.

Vaya por delante que esto es algo que todos hemos hecho en alguna ocasión, el motivo de este post no es criticar, simplemente tratar de mostrar una forma mejor de desarrollar código, más mantenible y escalable.

De hecho, circula un meme por las redes que, si eres desarrollador/a, habrás visto en alguna ocasión:

En este ejemplo, con fines didácticos, tenemos un método de una clase que comprueba que el formulario se ha enviado. A continuación verifica en nonce. Después comprueba que recibimos un email válido. Con ese email comprobamos si tenemos al usuario registrado, y por último si es administrador.

Como podemos ver, tenemos un montón de condiciones anidadas. Esto se puede complicar en función de las necesidades, y crecer y crecer hasta un punto que sea incluso difícil de leer.

Lo ideal sería encapsular cada comprobación en un método independiente, con un nombre que le de sentido y semántica al código. Además de leerse mejor el código. A esto se le conoce como cláusulas de guarda.

Las cláusulas de guarda son un método que nos permite hacer nuestro código más legible, semántico, escalable, testeable y con menor nivel de indentación.

De este modo, en lugar de anidamientos, tendremos una lista «plana» de condicionales, una tras otra, con early returns (si no se cumple una condición, no seguimos).

Algo como esto:

Llamando a los método con nombres descriptivos, nos ayudará a leer mejor el código y a que sea más fácil generar tests unitarios.

No es lo mismo tener en código un isset($_POST[‘btn’]) (donde no sabes qué es btn) que un método que se llame is_form_submitted() (donde estás preguntando si el formulario ha sido enviado).

Puede que también te interese

Mejora la puntuación de Google PageSpeed Insights: Habilita la compresión
Mejora la puntuación de Google PageSpeed Insights: Habilita la compresión
1. Optimizar imágenes 2. Minificar CSS y JS 3. Especificar caché de navegador 4. Habilita la compresión 5. Reducir el tiempo de respuesta del servidor…
Cómo desactivar Gutenberg cuando salga WordPress 5.0
Cómo desactivar Gutenberg cuando salga WordPress 5.0
La versión 5.0 de WordPress está a la vuelta de la esquina, prevista para finales de Agosto. Como ya sabrás a esta altura de la…
WordCamp Barcelona 2018, gestión avanzada de assets en WordPress
WordCamp Barcelona 2018, gestión avanzada de assets en WordPress
He tenido el gran honor de abrir la WordCamp Barcelona 2018 en el Aula Magna del Edificio Histórico de la Universidad de Barcelona. Hoy en día,…
Cómo restringir el acceso al back-end de WordPress a usuarios no administradores
Cómo restringir el acceso al back-end de WordPress a usuarios no administradores
A continuación vamos a ver cómo bloquear o restringir el acceso al back-end o escritorio de WordPress (con y sin plugins), incluso ocultaremos el admin…