Por @Alvy — 3 de febrero de 2023

No sabía que esto existía pero me parece tan divertido como absurdamente necesario: las condiciones Yoda (o Notación Yoda). Es un estilo de programación en el que las dos partes de una expresión, normalmente condicional, están escritas al revés. Funcionar funciona, y es tan correcto como el orden normal, solo que resulta un poco más críptico y menos legible.

if (42 == $valor) { /* ... */ }

// Se lee: "Si 42 igual al valor es..."

Normalmente todo el mundo escribiría una condición de igualdad como esa así: if ($valor == 42)… que se lee «Si $valor es igual a 42, entonces…» en notación Yoda se escribiría if (42 == $valor)…, que técnicamente es lo mismo. Pero si recuerdas cómo hablaba el sabio Jedi en las películas, se leería invirtiendo buena parte de la frase: «Si 42 igual al VALOR es…»

Notación Yoda

Esto me recordó que cuando éramos pequeños, en los meses siguientes al impacto que provocó en nuestros jóvenes y atolondrados cerebros Star Wars: el imperio contraataca (tendríamos unos 13-14 años) nos dio a los chavales del colegio por hablar como Yoda a modo de juego. Podíamos pasarnos todo el día «hablando al revés»; la imitación del personaje era un extra. Puedo asegurar que se hace un poco raro al principio pero luego resulta casi natural. La gracia del asunto aguantar era, y ver quién al revés hablando más resistía. Persistentes eran algunos y días y días pasaban… Ganador resultaba el último en del juego retirarse; maestro Jedi era nombrado.

Actualización – Albert nos escribió para apuntarnos otra ventaja de la notación Yoda aparte de la puramente humorística, al menos para los programadores de C y PHP:

La notación Yoda resulta útil también porque cuando se quiere escribir «if ($valor == 42)» el programador puede por error escribir «if ($valor = 42)» y el compilador no se «queja». El resultado es un programa que no hace para nada lo que se pretendía: iguala la variable al valor 42, en lugar de compararla con 42.

Si usas siempre las condiciones Yoda cuando escribes por error = (asignación) en lugar de == (comparación de igualdad) se generará un error de compilación y el programador quedará alertado para arreglarlo.

Más – Néstor también nos escribió pero con buenos argumentos en contra (con los que coincidimos):

Las condiciones Yoda son una aberración que nunca debería haber existido. Hacen el código difícil de leer, que es uno de los peores pecados que se pueden cometer al programar (ya sabéis: «el código se escribe una vez y se lee mil veces») a cambio de ningún beneficio en absoluto. Es urgente destruirlas con fuego lo antes posible.

This is the way.

Relacionado:

Compartir en Flipboard Publicar / Tuitear Publicar