Paradigmas de programación

Notación Yoda en programación: explicación

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:

See the gist on github.

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

See the gist on github.

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:

See the gist on github.

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:

See the gist on github.

Errores con if

A veces hacemos una comparación así:

See the gist on github.

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

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

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…

See the gist on github.

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

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:

See the gist on github.

Al compilar marca este error:

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.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
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/

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

3 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

4 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

4 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

5 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

2 semanas hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

2 semanas hace

Esta web usa cookies.