Это субъективно, и я бы не решился сказать, что есть какие-то лучшие практики, но:
- Считаете ли вы, что DebuggerDisplayAttribute более полезен для некоторых типов объектов (например, пользовательских структур данных)чем другие?
На сегодняшний день наиболее распространенным типом использования являются типы, представляющие бизнес-объекты - и я обычно буду отображать имя + имя.Также любые типы, которые будут храниться в коллекциях в приложении.
Кроме этого, я добавляю его всякий раз, когда я часто нахожу поиск свойств в отладчике.
2.Вы делаетеопределить его для открытых типов, внутренних типов или для обоих?
Оба.
3. Как правило, вы добавите его в начальную реализацию или дождитесь тестера /пользователь запрашивает его?
Тестеры / пользователи никогда его не увидят - он используется только во время отладки.
4. Когда лучше определить DebuggerDisplayAttribute и когдаимеет ли смысл переопределять .ToString ()?
Переопределять ToString (), когда требуется представление во время выполнения, либо для ведения журнала, либо для конкретных приложений.Используйте DebuggerDisplayAttribute, если он вам нужен только для отладки.
5. Есть ли у вас рекомендации относительно того, сколько данных вы выставляете в атрибуте, или ограничения на объем вычислений для включения?
Поскольку он не используется во время выполнения, единственным ограничением является то, что он должен быть достаточно быстрым, чтобы не мешать отладке (особенно при многократном вызове для элементов коллекции).
Вам не нужно беспокоиться о предоставлении конфиденциальных данных, как это было бы при ведении журнала во время выполнения (например, путем переопределения .ToString), потому что такие данные все равно будут видны в отладчике.
6. Применяются ли какие-либо правила наследования, которые бы делали более выгодным применение к базовым классам?
Нет, применяйте его к нужным вам классам.
7. Есть ли что-то еще, чтобы рассмотреть, решая, когда или как использовать это?
Больше ничего я не могу думать.