# Condiciones Yoda

En la jerga de los programadores, las condiciones Yoda (también conocidas como la notación Yoda) es un estilo de programación donde las dos partes de una expresión están invertidas con respecto al orden típico en una sentencia condicional, de manera que una condición de Yoda coloca la parte constante de la expresión en el lado izquierdo de la declaración condicional.
Son parte de los estándares de codificación para aplicaciones como Symfony y WordPress.

## Origen

El nombre de este estilo de programación se deriva de Yoda, un personaje de la película Star Wars que construye sus frases con un orden sintáctico particular (por ejemplo, "Cuando tengas 900 años, lucirás tan bien como no"). Thomas M. Tuerke afirma haber acuñado el término notación Yoda y haberlo publicado en línea por primera vez en 2006. Según él, el término condición Yoda fue popularizado más tarde por Félix Cloutier en 2010.

## Ejemplo

Normalmente una declaración condicional se escribiría como:
Las condiciones de Yoda describen la misma expresión, pero al revés:

## Ventajas
### Detecciones de errores

Colocar el valor constante en la expresión no cambia el comportamiento del programa (a menos que los valores se evalúen como falsos; consúltense los párrafos siguientes). En lenguajes de programación que utilizan un único signo igual (=) para expresiones de asignación y no para comparación, puede aparecer un error al asignarse un valor sin querer en lugar de escribir una declaración condicional.
Usando las condiciones de Yoda:
Dado que 42 es un valor constante y no se puede cambiar, este error será detectado por el compilador.

### Evitar algunos tipos de comportamiento nulo inseguro

Las condiciones de Yoda ayudan con comportamientos inseguros en algunas situaciones.
Con condiciones de Yoda:

## Crítica

Las condiciones de Yoda son criticadas por comprometer la legibilidad del gódigo, al aumentar la carga cognitiva.
Algunos lenguajes de programación (como Swift, Kotlin y versiones de Python inferiores a 3.8) no permiten asignaciones de variables dentro de condicionales, por ejemplo, al exigir que las asignaciones no devuelvan un valor o al definir como parte de su gramática la invariante de que las condiciones no pueden contener declaraciones de asignación, en cuyo caso es imposible encontrar este error (es decir, el analizador lo detectaría como error de sintaxis antes de que se le permitiera a un programa pasar al tiempo de ejecución). Muchos compiladores producen una advertencia para código como if (myNumber= 42) (por ejemplo, la opción GCC -Wall advierte "sugerir paréntesis alrededor de la asignación utilizada como valor de verdad"), que alerta al programador sobre el posible error. En lenguajes dinámicos como JavaScript, linters como ESLint puede advertir sobre una asignación dentro de un condicional. Python 3.8 introdujo expresiones de asignación, pero usa el operador morsa := en lugar de un signo igual normal (=) para evitar errores que simplemente confunden == con =.
La ventaja de evitar el comportamiento nulo también puede considerarse una desventaja, ya que los errores de puntero nulo pueden ocultarse y aparecer solo mucho más tarde en el programa.
Otra desventaja aparece en C++ cuando se comparan tipos no básicos como el == es un operador y es posible que no haya una función sobrecarga de operador adecuada definida. Ejemplo: la comparación de un CComBSTR de Microsoft con una cadena de texto, escrita como if (L"Hello"== cbstrMessage), no queda asignada a una función de sobrecarga.