2009-11-30 48 views
4

Trace.AssertDebug.Assert语句保留在“稳定”且已移入测试和生产环境的代码中是否明智?.NET生产代码中的'断言'语句

如果是这样,这些断言声明如何提供帮助? Guard类是否足以检查异常情况并根据情况提出异常情况?

回答

8

Debug.Assert语句将被忽略,除非您定义了DEBUG编译常量,默认情况下,当您在“debug”配置中进行编译而不是在“release”配置中进行编译时。事实上,Debug类只能用在测试环境中,在那里你应该捕获所有(或者至少大部分)会导致Debug.Assert失败的bug。

Trace.Assert以同样的方式工作,只是必须存在的编译常量是TRACE,默认情况下它存在于“debug”和“release”配置中。在释放代码中使用跟踪断言可能是有意义的,但通常最好让它们做的不是方法的默认行为(它只是显示带有堆栈跟踪的消息框)。您可以通过为Trace类配置自定义跟踪侦听器来实现此目的;请参阅方法文档了解更多详细信息。

2

断开异常的好处之一是你可能不会在发生问题的地方捕捉异常。但断言总是发生在正确的地方。

4

移动至正式发布环境是一个开始,而不是程序的生命的结束。 一旦它符合真实的用户和现实世界,您将开始获得大量有关 问题和需求的反馈,但您并未预料到。 这意味着,开发才刚刚开始。 你需要你的断言来帮助你尽早地发现错误的假设(在 之前他们犯了很多问题),并帮助你扩展和改变你的程序。

+1

+1维护思维... – 2009-11-30 11:21:28