Hace un tiempo
hice un extenso post comentando sobre el "difundido fanatismo" de algunos desarrolladores de usar
al revés las condiciones de igualdad en un if , en mi opinión "contranatura", sin respetar como alguna vez nos enseñaron nuestros primeros docentes (ver artículos como
"Código como documentación"):
if ($variable == "valor")Por lo que este orden nos permite hacer una redacción natural de la lógica que estamos codificando, es decir:
if ($edad == 30)Se traduciría como
"Si la edad es igual a 30"Por lo que actualmente hay una "seudo-moda" de hacerlo al revés,
if (30 == $edad)Se traduciría como
"Si 30 es igual a edad"Algo que, luego de haber pasado algunos años dando clases a distintos niveles de desarrolladores, empezando por personas con cero conocimiento del tema,
siento que esta práctica no hace más que dificultar la lectura natural de las condiciones, y en consecuencia, ofuscar el código.
Amante de lo simple como soy (considero que el verdadero arte y esencia de la programación es hacer las cosas simples, no complejas),
me opuse completamente a esta práctica, aún con los argumentos técnicos de que esta técnica podría salvarnos en caso de asignaciones accidentales del tipo:
if ($edad = 30)Lo cual en PHP terminaríamos modificando el valor de $edad (porque estamos usando un solo "=" y no dos), algo que no sucedería si hiciéramos
if (30 = $edad)De todas formas me pareció exagerado al extremo, cambiar algo que se hizo por años, desde los inicios de los tiempos, solo para cubrir esta
"hipotética situación tan poco probable", ni que hablar que todo IDE respetable nos detecta este error y es fácil de ver y corregir.
Bien, suerte que gracias a los errores uno aprende y
me pasó hace relativamente poco este error con consecuencias bastante importantes, por lo que voy a describir
en qué situación SI sugiero esta práctica (no siempre, no con todo el código):
- Si por una razón extrema tienes que modificar código en producción
- y además no puedes usar un IDE que te asista, y tienes que usar un editor sin asistencia en la codificación (como el Editplus, Notepad++, etc)
Sí, y solo sí, mientras tengas que alterar o agregar una condición que pueda generar este error, invierte la condición para estar cubierto ante cualquier distracción. Pero luego de hecho, fuera de producción, corrige el código, para clarificar su entendimiento.
De todas formas, lo veo complicado de hacer si no estás acostumbrado a ello.
Pero bueno, cuando me sucedió me hizo reconocer que había una situación muy específica que podría ser aplicable y útil, aún para una persona con experiencia como yo ;-)
¿Alguna vez te fue verdaderamente útil esta práctica? ¿alguna otra?