Quelles sont les meilleures pratiques autour du débogueurDisplayAttribute ? Qu'est-ce qui guide vos décisions quand et comment appliquer l'attribut à votre code? Par exemple .. p>
déboggerdisplayAttribute code> plus utile sur certains types d'objets (c'est-à-dire des structures de données personnalisées) plutôt que d'autres? Li>
- le définissez-vous sur des types publics, des types internes ou des deux? li>
- allez-vous généralement l'ajouter à la mise en œuvre initiale ou attendez qu'un testeur / utilisateur le demande? Li>
- Quand est-il préférable de définir
déboggerdisplayAttribute code> et quand il est plus logique de remplacer .tostring () code>? li>
- Avez-vous des lignes directrices sur la quantité de données que vous exposez dans l'attribut ou des limites de la quantité de calcul à inclure? LI>
- Toutes les règles d'héritage s'appliquent qui le rendrait plus utile de s'appliquer sur les classes de base? Li>
- Y a-t-il autre chose à considérer lorsque vous décidez ou comment l'utiliser? LI>
ol>
4 Réponses :
Je l'utilise beaucoup lorsque je sais qu'une section de code nécessitera beaucoup de débogage. Il enregistre un peu de temps lors de la navigation sur les objets du débogueur, surtout si vous utilisez des expressions telles que Je l'ai presque toujours mis sur la classe qui se retrouvera dans des collections afin qu'il soit vraiment rapide de voir chaque article et non seulement d'un groupe d'éléments myNamespace.myclass que vous devez développer. P>
Mon avis est que "{enfantCollection.count}" code>. Cela vous donne une idée rapide des données que vous regardez. P>
Tostring () code> est utilisé pour fournir une représentation d'utilisateur finale des données. Le débogueurDisplay est destiné aux développeurs, vous pouvez décider d'afficher l'identifiant d'élément, des propriétés internes / privées supplémentaires. P>
C'est subjectif et j'hésiterais de dire qu'il y a de meilleures pratiques, mais: p>
- Recherchez-vous du débogueurDisplayAttribute plus utile sur certains types d'objets (c'est-à-dire des structures de données personnalisées) plutôt que d'autres? Li> ol> blockQuote>
De loin l'utilisation la plus courante est des types qui représentent des entités commerciales - et je vais afficher couramment ID + nom. Aussi des types qui seront stockés dans des collections de l'application. P>
Autre que je l'ajoutez chaque fois que je me retrouve souvent à la recherche de propriétés dans le débogueur. P>
2.friez-vous la définir sur des types publics, des types internes ou des deux? p> blockQuote>
les deux. p>
3. Pour que vous ajoutez généralement à la mise en œuvre initiale, ou attendez qu'un testeur / utilisateur le demande? P> blockQuote>
Les testeurs / utilisateurs ne le verront jamais - il est utilisé uniquement lors du débogage. P>
4.Quand est-il préférable de définir le débogueurDisplayAttribute et quand il est donc plus logique de remplacer .Tostring ()? P> blockQuote>
remplaçage de tostring () lorsque vous souhaitez la représentation au moment de l'exécution, soit à des fins de journalisation ou spécifiques à l'application. Utilisez DebuggerDisplayAttribute si vous n'en avez besoin que de débogage. P>
5. Vous avez des lignes directrices sur la quantité de données que vous exposez dans l'attribut ou des limites de la quantité de calcul à inclure? P> blockQuote>
Comme il n'est pas utilisé au moment de l'exécution, la seule contrainte est qu'elle devrait être suffisamment rapide pour ne pas gêner l'expérience de débogage (en particulier lorsqu'elle est appelée plusieurs fois pour des éléments d'une collection). p>
Vous n'avez pas besoin de vous préoccuper de l'expulsion de données sensibles comme vous le feriez avec la journalisation de l'exécution (par exemple en priorisant .tostring), car ces données seront visibles de toute façon dans le débogueur. P>
6.Les règles d'héritage s'appliquent que cela rendrait plus bénéfique de s'appliquer sur les classes de base? P> blockQuote>
Non, appliquez-le sur les classes dont vous en avez besoin. P>
7.Est y avoir autre chose à considérer lors de la décision ou à la façon de l'utiliser? P> blockQuote>
rien d'autre que je peux penser. P>
Merci pour la réponse approfondie. RE: 3, je pensais en particulier d'API publiques que d'autres traverseront un débogueur. Et dans ces cas, évitez-vous d'afficher des données internes qui seraient moins utiles pour le consommateur?
@Scott - Pour être honnête, la plus grande victoire est lorsque vous avez une collection d'objets dans le débogueur et que vous souhaitez trouver rapidement celui qui est intéressant. Dans ce cas, les propriétés qui représentent une sorte d'identifiant et de nom sont les plus utiles - une fois que le développeur a identifié l'élément intéressant, il peut l'ouvrir pour examiner les données internes. Néanmoins, je ne voudrais pas explicitement cacher des données internes, car rien n'est vraiment privé dans le débogueur.
en général, Le lien d'Omer's aux meilleures pratiques ressemble à des conseils sonores; Cependant, je me pencherai personnellement de la suggestion d'avoir une méthode dédiée débogueurdisplay code> a une valeur pour toute classe qui n'a pas de significatif .tostring () code> implémentation, mais je n'ai pas personnellement vu personne de manière proactive écrire de manière proactive les attributs avant leur sont nécessaires. p>
debuggerdisplay () code> - même s'il est privé, il semble offrir peu d'avantages sur l'attribut à l'écart de la suppression des chaînes magiques. P>
Mode de débogage sans Mode de débogage avec débogueurDisplay attribut les meilleures pratiques p> < href = "https://youtu.be/i6gdmt-bdou?t=373" rel = "NOFOollow NOREFERRER"> Conseils de débogueur / Diagnostics et astuces dans Visual Studio 2019 P> Bien que le L'attribut est assez vieux que vous devriez regarder les applaudissements et la réaction du narrateur :) au fait, vous voudrez peut-être se e cette démo complètement dans votre temps libre si vous voulez voir plus de trucs de débogueur. P> p> débogueurDisplay code> attribut
P > débogueurDisplay code> attribut p>
p>
C'est automatique. Vous débogez et murmurez-vous aux informations de débogage jusqu'à ce que vous en avez marre et en écrivez un.