Question

Je place généralement dans les valeurs des variables qui ne sont utilisés qu'une fois après la cession. Je le fais pour rendre le débogage plus pratique plus tard, que je suis capable de planer la valeur d'une ligne où il est utilisé plus tard.

Par exemple, ce code ne vous permet pas de la valeur placez le curseur getFoo ():

return GetFoo();

Mais ce code ne:

var foo = GetFoo();
return foo; // your hover-foo is great

YAGNI esque , comme fonctionnalité de la mission de l ' foo ne sera jamais utilisé jusqu'à ce que quelqu'un a besoin de déboguer sa valeur, qui peut ne se produira jamais . S'il n'y avait pas simplement prévu session de débogage, le premier extrait de code maintient au-dessus du code plus simple.

Comment voulez-vous écrire le code pour meilleur compromis entre la simplicité et la facilité d'utilisation du débogueur?

Était-ce utile?

La solution

Je ne sais pas d'autres débogueurs, mais le débogueur Visual Studio intégré rapporterai ce qui a été retourné d'une fonction dans la fenêtre « Autos »; une fois que vous faites un pas sur la déclaration de retour, la valeur de retour apparaît comme « [nom de la fonction] est revenu » avec une valeur de quelque valeur a été renvoyée.

GDB prend en charge les mêmes fonctionnalités ainsi; la commande « finish » exécute le reste de la fonction en cours et affiche la valeur de retour.

Ceci étant une caractéristique très utile, je serais surpris si la plupart des autres débogueurs ne pas en charge cette fonctionnalité.

En ce qui concerne plus « problème » général « du débogueur uniquement des variables », sont-ils vraiment débogueur seulement? Je tends à penser que l'utilisation de bien nommées variables temporaires peut considérablement améliorer la lisibilité de code.

Autres conseils

Une autre possibilité est d'apprendre suffisamment la programmation en assembleur que vous pouvez lire le code de votre compilateur génère. Avec cette compétence, vous pouvez savoir où la valeur est tenue (dans un registre, en mémoire) et de voir la valeur sans avoir à stocker dans une variable.

Cette compétence est très utile si vous avez besoin de déboguer un exécutable optimisé. L'optimiseur peut générer du code qui est sensiblement différent de la façon dont vous l'avez écrit tel que le débogage symbolique est pas utile.

Une autre raison pour laquelle vous n'avez pas besoin des variables intermédiaires dans le débogueur Visual Studio est que vous pouvez évaluer la fonction dans la fenêtre Watch et la fenêtre immédiate. Pour la fenêtre de la montre, tout simplement souligner la déclaration que vous voulez et faites-le glisser évalué dans la fenêtre.

Je dirais que ça ne vaut pas se soucier. Étant donné qu'il n'y a pas de frais généraux d'exécution dans le cas typique, aller de noix. Je pense que décomposer des déclarations complexes en simples déclarations multiples augmente généralement la lisibilité.

Je laisserais la tâche jusqu'à ce qu'il soit nécessaire . Si vous ne trouvez dans ce petit bout de code, vouloir un oeil à cette variable, vous n'avez pas encombré votre code inutilement. Lorsque vous exécutez dans le besoin, le mettre dans (il devrait être trivial Extrait variable refactoring). Et quand vous avez terminé cette session de débogage, se débarrasser ( Inline Variable ). Si vous vous trouvez le débogage tant - et tant à ce moment précis - que vous êtes las de refactoring avant et en arrière, puis réfléchir à la façon d'éviter la nécessité; peut-être plus des tests unitaires contribueraient.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top