de&&bug 2.0

Assolutamente geniale, quanto divertente, la soluzione proposta da JeanHuguesRobert per effettuare debug in modo semplice, semantico e senza spreco eccessivo di risorse o senza aumentare in modo consistente la velocità di esecuzione del codice.

Partiamo da questo “suo” presupposto:

Trace messages is my number one debugging tool

praticamente inopinabile se avete mai avuto a che fare con JavaScript, ActionScript o altri linguaggi ancora dove al posto di un trace, o di un alert, avete stampato in console le informazioni in quel punto o nell’altro.

Il modo è semplice e indolore, purché il linguaggio supporti l’operatore && (AND “progressivo”).

Il succo è utilizare una variabile globale denominata de, dal valore possibilmente booleano, che seguita dall’AND e dalla funzione globale bug, permette all’interprete di valutare il primo valore e, se vero, di richiamare la funzione in esame.

Eccovi un piccolo esempio:


var de = true, // false se non si vuole il debug
bug = function(){console.log.apply(this, arguments)};
// o banalmente per maggior compatibilità:
// bug = alert

A questo punto, in qualunque parte del codice, potrete scrivere:


de&&bug("Property value:" + obj.propName);

e ritrovarvi nei logs, oppure in dialog, tutte le informazioni che volete.

Non è al limite del divertente?

Vediamo qualche altro esempio con qualche altro linguaggio:

  • ActionScript

    var de:Boolean = true,
    bug = function(Void):Void {
    trace.apply(this, arguments);
    };
    // test
    de&&bug("Hello World");
  • PHP

    define('de', true);
    function bug(){
    $output = '';
    foreach(func_get_args() as $argument)
    $output .= $argument;
    echo $output."rn";
    }
    // test
    de&&bug("Hello World");
  • Python

    class bug:
    def __call__(self,*args):
    if de:
    print("".join(args))
    de = True
    bug = bug()
    # test
    de>bug("Hello World")

    … o perchè no …


    class de:
    __debug = True
    def bug(self, *args):
    if(self.__debug):
    print("".join(args))
    de = de()
    # test
    de.bug("Hello World")

… cosa ne pensate, vale la pena di introdurre questo facile e veloce metodo di controllare i dati nel vostro prossimo applicativo Web?

Ah beh, se non siete ancora convinti provate a dare un’occhiata anche agli altri sistemi, tutti rigorosamente JavaScript!

Ti consigliamo anche

Link copiato negli appunti