Утверждения «Assert» в производственном коде .NET

StackOverflow https://stackoverflow.com/questions/1818999

  •  10-07-2019
  •  | 
  •  

Вопрос

Разумно ли оставлять операторы Trace.Assert и Debug.Assert в коде, который является «стабильным»? а что было перенесено в тестовую и производственную среды?

Если да, то как помогают эти утверждения? Разве не достаточно, чтобы классы Guard и т. Д. Проверяли условия исключений и вызывали исключения соответствующим образом?

Это было полезно?

Решение

Операторы Debug.Assert будут игнорироваться, если у вас нет DEBUG Определена константа компиляции, которая по умолчанию происходит при компиляции в " отладке " конфигурации, а не в «выпуске» конфигурации. Действительно, класс Debug предназначен для использования только в средах тестирования, где вы должны отлавливать все (или, по крайней мере, большинство) ошибок, которые могут привести к сбою Debug.Assert.

Trace.Assert работает аналогично, за исключением того, что компиляция константой, которая должна существовать, является TRACE, которая по умолчанию существует как в "debug" и "выпуск" конфигурации. Может иметь смысл иметь утверждения трассировки в коде выпуска, но обычно предпочтительнее заставить их делать что-то иное, чем поведение метода по умолчанию (которое просто отображает окно сообщения с трассировкой стека). Вы можете добиться этого, настроив собственный прослушиватель трассировки для класса Trace; см. документацию метода для получения дополнительной информации.

Другие советы

Переход на среду Prod - это начало, а не конец жизни программы. Как только он встретит реальных пользователей и реальный мир, вы начнете получать множество отзывов о проблемы и потребности, которые вы не ожидали. Это означает, что развитие только начинается. Вам понадобятся ваши утверждения, чтобы вы могли уловить ошибочные предположения раньше (до они создают много проблем) и помогают расширить и изменить вашу программу.

Одним из преимуществ Assert перед исключением является то, что вы, возможно, не поймаете исключение в том месте, где возникает проблема. Но Assert всегда происходит в правильном месте.

Еще одно преимущество Assert, о котором я могу подумать, это то, что он помогает вам отлаживать в производственной среде. Утверждения, которые все еще активны в коде выпуска, могут быть динамически получены с помощью соответствующих инструментов, таких как DbgView . Это очень удобно для отладки после выпуска вашего продукта.

http://technet.microsoft.com/en-us/sysinternals /bb896647.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top