Enquanto você debuga a aplicação, para visualizar ao propriedades de uma classe, o DataTip é constantemente aberto:
Ao abrir, inicialmente o Namespace é exibido. Para visualizar as propriedades é preciso de mais um click no mouse. Se por acaso a classe tiver muitas propriedades, dificulta a tarefa, ainda mais se for um array.
Sem perceber, o debug fica cansativo. Você vai tomar mais café que o normal. Até que outras estratégias são tomadas. Como fazer o Pin de uma propriedade ou usar o Breakpoint condicional.
Estas stratégias em geral são trabalhosas, pois atuam num ponto especifico do código. E caso o problema esteja em outro trecho haverá a necessidade de refazer o procedimento. Logo, mais café.
DebuggerDisplay
O attribute DebbuggerDisplay fará seu debug menos doloroso.
Este atributo controla como um object, property, ou field é exibido nas janelas de debug do Visual Studio. Este atributo pode ser aplicado a types, delegates, properties, fields e assemblies.
O atributo DebuggerDisplay possui um único argumento, que é uma string que será exibida ao invés do Namespace.NomeDaClasse.
Decorando tua classe, toda vez que estiver no debug o DataTip será exibido da seguinte maneira:
DebuggerDisplay x ToString()
O atributo DebuggerDisplay é interpretado pelo Debug e só funciona quando há uma IDE atachado ao processo.
O ToString() é compilado, o que faz dessa estratégia uma feature da aplicação. Independente se estiver em modo debug ou não.
Se uma classe tiver sobrescrito o método ToString() e também utilizar o DebuggerDisplay, o atributo DebuggerDisplay terá precedência sobre o método ToString().
Utilizar o ToString() com este objetivo de Debug pode ocasionar efeitos colaterais e há uma grande chance de estar inserindo um bug no código.
Espero que tenham gostado, deixem seus comentários, vamos bater um papo!
Referências
- Using the DebuggerDisplay Attribute
- Why override ToString()? Use DebuggerDisplayAttribute instead
- C# attributes you should know #3: [DebbugerBrowsable] and [DebuggerDisplay]
Comments