Las condiciones Yoda usar debes

Para mi primer art铆culo del 2015 vengo con una ense帽anza jedi 馃槈
He aprendido algo de manera fortuita, bastante interesante y en lo que nunca hab铆a ca铆do en la cuenta.

Estaba instalando un sniffer de c贸digo para聽Sublime Text, con el que hacer la聽revisi贸n de est谩ndares de c贸digo cuando programas algo para聽Wordpress, generalmente un plugin. Al instalar las reglas con los est谩ndares, usadas del repositorio oficial:聽https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards, he probado el sniffer de c贸digo con el primer archivo que he abierto del plugin Akismet, que por cierto me ha sacado un mont贸n de errores de est谩ndares y eso que el plugin es de los mismos de聽Wordpress.

La primera recomendaci贸n de est谩ndar que me saca por pantalla es la siguiente:

 

“Use Yoda Conditions checks, you must”. Y yo como: WHAT?

Pues bien, tras la primera b煤squeda en Google encontr茅 una web, que parece o pretende ser un compendio de est谩ndares de c贸digo: http://codingstyleguide.com/style/59/php-yoda-conditions entre los que define el uso de las condiciones Yoda en una gran variedad de lenguajes de programaci贸n.

驴Que son las condiciones Yoda?

Las condiciones Yoda, no son m谩s que la disposici贸n en la que se colocan ciertos datos, y m谩s concretamente los tipo booleanos, en las comparaciones l贸gicas. Tambi茅n es aplicable a las constantes y literales.

Por lo que he le铆do en stackoverflow, grupos de google y otras fuentes, este est谩ndar lleva un tiempo entre los c铆rculos de las buenas maneras de hacer c贸digo.

Ejemplo de lo que hacemos y vemos por doquier:


<?php

if ($prueba == true) {
// c贸digo
}

Ahora bien, aplicando el est谩ndar de condici贸n Yoda tendr铆amos algo as铆:

Con un tipo booleano.


<?php

if (true == $prueba) {
// c贸digo
}

Con un literal.


<?php

if ('ok' == $prueba) {
// c贸digo
}

驴Para que son las condiciones Yoda?

Este est谩ndar viene a solventar uno de los errores de programaci贸n m谩s tonto, despu茅s de olvidar un punto y coma, un cierre de par茅ntesis y errores en la escritura de c贸digo del mismo calibre, como olvidar un car谩cter de igual (=). Que en algunos casos, ya sea por un lapsus mental o desconocimiento, hasta he visto confundir una comparaci贸n (==) por una asignaci贸n (=).

De este modo, cuando se compara, un booleano, una constante o un literal siempre es una buena pr谩ctica incluir el dato primero y despu茅s la variable a comparar.
Si olvidamos uno de los signo de igual (=), el int茅rprete de php devolver谩 un error de parseo. En cambio si usamos el m茅todo normal, no devolver谩 ning煤n error, porque se estar谩 haciendo una asignaci贸n, en vez de una comparaci贸n.
Este tipo de error, que parece algo insignificante puede desencadenar que la l贸gica de la aplicaci贸n siga flujos de datos que no corresponden a como deber铆a funcionar, dando lugar a funcionamientos inesperados, almacenamiento de datos err贸neos o p茅rdida de los mismos, y si se trata de un e-commerce, adserver, apps m贸viles o lo que sea hasta p茅rdidas econ贸micas.

Toda buena pr谩ctica en el desarrollo de c贸digo es bien recibida, que sin duda cualquiera deber铆a aplicar, especialmente en este caso de las condiciones yoda, los iniciados en la programaci贸n.

Categor铆asPHP

Deja un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *