Incordiando al personal

 

Una de las cosillas que conviene hacer en un programa serio es usar un sistema de logging en condiciones en vez de usar un System.out o un System.err. Sin embargo, aunque se lo dices a la gente, es bastante habitual que muchos se "despisten" o pasen olímpicamente del tema, llenando el código de System.out.println("Voy por aquí") y System.out.println("Entro en el bucle"). Por supuesto, dicen que es temporal, sólo para probar, pero la realidad es que luego eso nunca se quita y queda por los siglos de los siglos.

Aprovechando que la clase System tiene un método setOut() que permite cambiar el System.out por otra cosa, si veo que proliferan los System.out.println(), lo que hago es cambiarlo en el main() de la aplicación (o en algún sitio menos evidente). Una "colleja" amistosa se puede dar con un código como este

package chuidiang.ejemplos;

import java.io.PrintStream;

public class CambiaSystemOut {

    public static void main(String[] args) {
        System.setOut(new PrintStream(System.out) {
            @Override
            public void print(String text) {
                super.print("No seas capullo y usa log4j");
            }

        });

        System.out.println("Hola mundo");
    }
}
 

con lo que cuando alguien pone su System.out.println("salgo del if") y hace la prueba, verá un "No seas capullo y usa el log4j".

Y si quiero dar la "colleja" de forma más vistosa (y tenemos tiempo para permitirnoslo), se puede poner el mismo mensaje pero usando un JOptionPane.showMessage(), que "canta" más. O ya para una "colleja" nada amistosa, un System.setOut(null), que hará que salte una NullPointerException cada vez que hagan un System.out.println().

El que no se divierte, es porque no quiere y yo, a veces, me lo paso como los indios.

Entradas relacionadas:

Esta entrada ha sido publicada en anécdotas, java, log4j y etiquetada como , , . Guarda el enlace permanente.

6 respuestas a Incordiando al personal

  1. Rubén dijo:

    jajajajajaja, esto me recuerda a los mensajes que deja mi jefe en el codigo para cuando se nos olvida inicializar algún modelo, del estilo «machote nos has validado el modelo»; Aunque lo del NullPointerException me ha parecido muy bestia las otras dos opciones son muy buenas, y seguro que aprenden a usar el log4j.

  2. blaxter dijo:

    juas, qué bueno. Esta me la guardo para cuando toque (toco madera) algún proyecto en Java.

  3. Oropher dijo:

    Jajajajaja, tendre que aplicar lo mismo, tan bueno que sale usar log4j,,,

  4. Ataulfo dijo:

    BOFH style 😉

  5. Muy original… y didáctico.

  6. Rodrigo dijo:

    Puedes hacer más

    No sé si utilizas Continuum. Puedes crear una tarea que ejecute PMD. Tiene una regla

    SystemPrintln: System.(out|err).print is used, consider using a logger.

    Igual que esa regla, el resto de reglas. Si al ejecutar el continuum el PMD da errores no dejas que se ejecute la tarea de compilación. Si esto lo tienes en una máquina de pre-explotación o prueba o como le llames al no compilar no podrán ejecutar las pruebas de sistema. En fin puedes putear a la gente bastante más.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.