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!