Hay un término en programación que se llama notación Yoda o lenguaje Yoda. Es una forma distinta de programar las condiciones if en nuestros programas.
Criticada por muchos, querida por otros. No vamos a criticar nada porque no es el punto, el punto es explicar qué es y cómo usar esta notación.
Creo que proviene de cómo habla Yoda en las películas esas. Como que habla al revés. Por ejemplo, dice:
En esta guerra, un paso delante de nosotros, Dooku siempre parece estar
Cosa que podría cambiarse por:
Dooku siempre parece estar un paso delante de nosotros en esta guerra.
En cualquier lenguaje, una sentencia if tiene la siguiente forma:
if (condicion){
// Haz algo
}
La condición puede ser algo como “valor es igual a 20” así:
if(valor == 20){
//Es 20
}
Esa forma de los IF trae algunas “desventajas” sobre todo para los programadores nuevos o novatos, en los que me incluyo. A veces olvidamos las diferencias entre:
El primero es el operador de asignación. Por ejemplo:
variable = 1;
El segundo es el de equidad. Por ejemplo:
if(valor == 20){
//Es 20
}
El tercero es el de identidad, y sólo es usado (que yo sepa) en JavaScript y PHP por eso del tipado débil.
Por ejemplo:
if(valor === 20){
//Es idéntico a 20
}
A veces hacemos una comparación así:
if(valor = 20){
//Es 20
}
En donde estamos haciendo algo mal, ya que sólo usamos un signo de igual, es decir, estamos asignando a valor el número 20. Eso siempre devolverá algo que no es falso, por lo que la condición siempre será verdadera.
¿No me crees? veamos esto en JavaScript:
Como vemos, la condición se cumplió debido a que hicimos una asignación, aunque el valor no es 20 en el momento del if. La cosa correcta sería así:
Recomiendo leer: let en JavaScript
Pues este error de comparación puede llevarnos horas depurando, ya que la mayoría de veces no es un error de sintaxis ni nada de eso.
Es simplemente invertir cómo comparamos. Por ejemplo…
if(20 == valor){
console.log("El valor es 20 :)")
}
Ahí ponemos primero al valor y luego la variable. La ventaja de esto es que si olvidamos poner el doble signo, y sólo ponemos uno, pasará esto:
Claro, eso pasa en JavaScript pero cualquier otro lenguaje también se quejaría de ello.
¿Por qué? bueno, porque estamos intentando asignar a 20 el valor de valor. Así de simple. Y no podemos sobrescribir el valor de 20, ya que 20 es una constante.
De esta forma, si olvidamos poner los dos signos o tres signos, el compilador o intérprete nos avisará. Por ejemplo tengo este programa en C:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int valor = 19;
if (20 = valor)
{
printf("El valor es 20 :)\n");
}
return 0;
}
Al compilar marca este error:
Bueno, una de ellas es que al leer el código se lee al revés.
En lugar de decir: “if el valor es igual a 20” se dice: “if 20 es igual al valor”, cosa que puede confundir al lector del código.
Por otro lado, la mayoría de IDE’s y compiladores nos avisarán si estamos intentando asignar en lugar de comparar.
Úsalo si gustas, no le pasa nada a nadie y aunque su lectura es más difícil nadie morirá leyéndolo. Por otro lado puedes usarlo si te consideras novato.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.