Sco*_*ner 5 .net c# debugging visual-studio debuggerdisplay
DebuggerDisplayAttribute有哪些最佳实践?是什么指导您决定何时以及如何将属性应用于您的代码?例如..
DebuggerDisplayAttribute
某些类型的对象(即自定义数据结构)而不是其他对象更有用?DebuggerDisplayAttribute
以及何时覆盖更有意义.ToString()
?这是主观的,我会毫不犹豫地说有任何最佳做法,但是:
- 您是否发现DebuggerDisplayAttribute对某些类型的对象(即自定义数据结构)而不是其他对象更有用?
到目前为止,最常见的用途是代表业务实体的类型 - 我通常会显示ID +名称.此外,任何类型都将存储在应用程序的集合中.
除此之外,每当我发现自己经常在调试器中搜索属性时,我都会添加它.
2.您是在公共类型,内部类型还是两者上定义它?
都.
3.您通常会将其添加到初始实现中,还是等待测试人员/用户请求它?
测试人员/用户永远不会看到它 - 它只在调试时使用.
4.何时更好地定义DebuggerDisplayAttribute以及何时覆盖.ToString()更有意义?
如果希望在运行时表示,则覆盖ToString(),以用于日志记录或特定于应用程序的目的.如果您只需要它来进行调试,请使用DebuggerDisplayAttribute.
5.您是否有关于在属性中公开了多少数据的指南,或者包含的计算量限制?
因为它没有在运行时使用,唯一的限制是它应该足够快,不会妨碍调试体验(特别是当多次调用集合的元素时).
您不需要像使用运行时日志记录那样关注暴露敏感数据(例如,通过重写.ToString),因为这样的数据无论如何都会在调试器中可见.
6.是否适用任何继承规则可以更有效地应用于基类?
不,将它应用于您需要的类.
7.在决定何时或如何使用时,还有什么需要考虑的吗?
没有别的我能想到的.
无DebuggerDisplay
属性调试模式
带DebuggerDisplay
属性的调试模式
[DebuggerDisplay("{Name,nq}")]//nq suffix means no quotes
public class Product {
public int Id { get; set; }
public string Name { get; set; }
//Other members of Northwind.Product
}
Run Code Online (Sandbox Code Playgroud)
使用 DebuggerDisplay 属性告诉调试器要显示的内容(C#、Visual Basic、F#、C++/CLI)
Visual Studio 2019 中的调试器/诊断提示和技巧
虽然这个属性已经很老了,你应该看看掌声和解说员的反应:) 顺便说一句,如果你想看到更多的调试技巧,你可能想在空闲时间完整地查看这个演示。
归档时间: |
|
查看次数: |
1344 次 |
最近记录: |