Un tout petit ajout au code d’une classe, sans le perturber, permet d’obtenir un confort incroyable lorsqu’on débogue…
Prenons une classe simple
Essayons le debug sur la variable “order” :
C’est pas génial…
Essayons sur la propriété “Lines” de cet Order :
C’est pas beaucoup mieux…
Il faut entrer dans une arborescence de relations pour espérer voir l’information qui intéresse en débogue.
Bricoler ToString() ?
C’est assez moche comme solution… D’autant que ToString() appartient à la classe et qu’il peut avoir utilisé pour simplifier un affichage dans une ListView ou autre. C’est mal de faire ainsi, mais ça existe. Aller tripatouiller le ToString() juste pour les besoins du débogue c’est peut-être casser le code utilisé ailleurs…
Un Simple Attribut
Avec l’attribut DebuggerDisplay qu’on place sur la classe inutile de bricoler le code de celle-ci, on l’instrumentalise de l’extérieur. Totalement dédié au debug on fait ce qu’on veut, on affiche certaines données à un moment donné parce qu’elles ont un sens pour la séance de débogue en cours, on en affiche d’autres si besoin est dix minutes plus tard. La classe décorée n’a pas changé et c’est essentiel.
Voici les classes utilisées par l’exemple maintenant décorées :
Et voici les mêmes affichages de débogue présentés plus haut mais avec l’attribut :
Tout de suite c’est plus clair et sans toucher le code de la classe. L’attribut peut rester, en version release il est ignoré.
Conclusion
Il me semble que j’avais déjà du en parler il ya longtemps mais comme je remarque que cet attribut n’est toujours pas beaucoup utilisé, autant en remettre une petite couche !
Stay Tuned !