JavaRush /Blog Java /Random-ES /Condiciones de Yoda
MAX
Nivel 16
Киров

Condiciones de Yoda

Publicado en el grupo Random-ES
¡Un breve post está dedicado a todos los fanáticos de Star Wars y Java / JavaRush en honor al 40 aniversario del lanzamiento del Episodio V de la saga estelar! Condiciones de Yoda - 1A veces puedes encontrar muchas cosas interesantes en Internet, y el otro día me encontré con una práctica de programación bastante divertida a primera vista llamada Condiciones de Yoda . En resumen, las condiciones de Yoda (también notación Yoda) son un estilo de programación en el que las dos partes de la conocida expresión de comparación en declaraciones condicionales se invierten:
if (5 == a) {
    // do something
}
Este estilo se puede utilizar en lenguajes con sintaxis similar a C, con mayor frecuencia en expresiones con ify while.
if (0 == variable) {
    // do something
}

while (false == endingCondition) {
    // do something
}
¿Por qué desplazar la expresión constante al lado izquierdo del operador de comparación? Supongamos una situación hipotética en la que, después de ver un maratón de las nueve seis partes de la saga, nos sentamos, sin dormir, a escribir un código para nuestro proyecto favorito y escribimos lo siguiente:
void checkNumber(int a)
{
    if (a = 13) // Здесь-то и появляется так называемый unexpected behavior!
    {
        printf("Number is 13");
    }
}
En este caso, cada vez que ejecutes el programa, recibirás la cadena Number is 13", independientemente del argumento pasado аal método checkNumber(int a). ¡Esto no es lo que esperábamos! Los errores lógicos pueden ocurrir con bastante frecuencia entre los programadores novatos (créanme, lo sé). Pero en la etapa de compilación, un código como 13 = a generará un error, que ciertamente no pasaremos por alto, ya que el valor entero es una constante y, en consecuencia, no puede cambiar (convertirse en "a"). Condiciones de Yoda - 1

Existen ventajas y desventajas al utilizar las condiciones de Yoda.

Lado luminoso:

  1. Evitar la asignación a una variable cuando nuestro objetivo es la comparación.

  2. Resolviendo el problema del "comportamiento nulo" inseguro ( NullPointerException) // ejemplos de Wikipedia

  3. Sin Yoda:

    String myString = null;
    if (myString.equals("foobar")) { /* ... */ }
    // This causes a NullPointerException in Java

    Con Yoda:

    String myString = null;
    if ( "foobar".equals(myString) ) { // Результат - Ложь
       /* не выполняется */
    }

Lado oscuro:

  1. La legibilidad del código para las personas que verán su código se vuelve más compleja, lo que aumenta la carga sobre la percepción del código.
  2. Alcance limitado, solo se utiliza comparación de igualdad o comparación con una constante, verificando si hay nulo.
  3. Muchos compiladores ya “ven” errores de este tipo y advierten de antemano sobre la presencia de un error potencial.
Una alternativa a la notación Yoda pueden ser las pruebas unitarias. En los días de la Antigua República, se decía que realizar buenas pruebas garantizaría que el código estuviera libre de errores y hiciera sólo aquello para lo que fue escrito. ¿Qué prácticas útiles conoces? ¡Comparte tus conocimientos en los comentarios! ¡Y también escribe tu episodio favorito! ¡Y que la Fuerza esté contigo!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION