Introducción

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.

Notación Yoda

Recordemos lo que es un if

En cualquier lenguaje, una sentencia if tiene la siguiente forma:

La condición puede ser algo como “valor es igual a 20” así:

Operadores

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:

  1. =
  2. ==
  3. ===

El primero es el operador de asignación. Por ejemplo:

variable = 1;

El segundo es el de equidad. Por ejemplo:

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:

Errores con if

A veces hacemos una comparación así:

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:

Error en if

Error en if

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í:

If correcto

If correcto

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.

Yoda al rescate

Es simplemente invertir cómo comparamos. Por ejemplo…

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:

Error de asignación en JavaScript que puede ser resuelto con Notación Yoda

Error de asignación en JavaScript que puede ser resuelto con Notación Yoda

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:

Al compilar marca este error:

Error de compilación con GCC

Error de compilación con GCC

Desventajas

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.

Conclusión

Ú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.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 3,194 suscriptores


parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

0 Comentarios

Deja un comentario

Marcador de posición del avatar

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

A %d blogueros les gusta esto: