Out Of Bounds Exception!

Mi lugar de irreflexión y algo de programación

Archivos por Etiqueta: Código WTF

Los códigos WTF

En la vida de todo programador (ya sea Informático, Teleco, de FP o mi abuela dándole a la tecla) llega un momento en el que uno se embarca (o le embarcan) en algún tipo de proyecto más o menos grande en el que, inevitablemente, va a tener que reutilizar código ajeno y/o trabajar con otros compañeros. También existe la posibilidad de encontrarte esta situación en códigos ajenos que encuentras por ahí, ya sean tutoriales, ejemplos, PoCs (pruebas de concepto), como porno escrito en C… Aunque con estos últimos (los publicados en Internet, no el porno) es bastante menos común, ya que normalmente uno se lo piensa un par de veces antes de publicar algo, ¿no? =P

Se cumpla una, otra o las circunstancias que sean, el caso es que aparece cerca ese momento en el que te va a tocar modificar el código de otro (o no) y, muy probablemente, comprender qué hace (esto normalmente sí), y es en este momento en el que la tensión crece, la piel se te pone de gallina y rezas a los dioses que conoces para que no te toque a ti…

A mí me tocó hace poco, así que decidí recopilar unos cuantos más que fuese viendo y hacer una entrada sobre ello, que para algo el blog es mío 😀

  • El primero es un código en C que encontré en un ejemplo de inyección de código en procesos:
    BOOL st=TRUE;
    do
    {
        if(strcmp(pInfo.szExeFile, "test.exe")==0)
        {
            myPid=pInfo.th32ProcessID;
            break;
        }
        Process32Next(processList, &pInfo);
    }
    while(st!=FALSE);

    Obviando el hecho de que se le colaron algunos códigos HTML (incluido algún “<” y “>” en los include), el problema de este código es evidente: ¿para qué declarar un booleano que no usas?. Eso sin entrar a si es más o menos “elegante” el uso del break.

  • Este siguiente está en Java y es algo curioso:
    File f = new File (filename);
    if (f =! null){
        //...
    }

    Según mi parecer algunos programadores nos solemos poner algo paranoicos cuando llevamos muchas líneas de código escritas en un proyecto que no termina de funcionar, por lo que acabamos comprobando hasta lo más obvio, ¿cierto?

  • Más Java, este es de un tutorial de una librería con la que me he estado peleando últimamente:
    if(true) {
        //...
    }
    else {
        //...
    }

    Realmente no tengo nada que decir… podría entender que alguien escriba un código así si programa sobre algún IDE muy cutre o incluso con un simple editor de textos y, además, el proyecto en cuestión ha ido creciendo y esto lo ha implementado en varias fases. No obstante las risas te las echas igualmente cuando lo ves 🙂

  • Este es una aportación de mi amigo ccdg:
    public boolean containsStation(String station) {
        return stations == null ? null : stations.containsKey(station);
    }

    Este sí que es un verdadero código para decir “WTF??” ya que técnicamente no es posible convertir un null a un tipo de dato (ya sea boolean, int, float, o cualquiera, aunque sí a los objetos que los representan, como Boolean, Integer, etc.), no obstante parece ser que este programador se las ha apañado para “engañar” al compilador de Java y hacer que no detecte esta incompatibilidad de equipos, por lo que un código como el siguiente compilaría perfectamente, solo que tiraría un NullPointerException al ejecutarse:

    boolean a = true ? null : false;

    De hecho es curioso ver cómo un IDE como Eclipse nos señalará que “false” es código muerto, ya que siempre se va a cumplir que “true” es true, pero no se percatará de la asignación a no ser que sea demasiado obvia:

    boolean a = true ? null : null;

Y esto es todo amigos, espero que les hayan gustado y que no repitan ninguno en su trabajo =P

Anuncios