ric*_*ard 17 .net c# debugging assertions
我正在读一本断言的书(双关语)"你应该Debug.Assert在任何条件总是真或假的情况下用方法加载你的代码."
我没有使用过这两种调试方法,但它有一定道理.但是,我不愿意在我的生产代码库中散布这些东西.
思考?
Mar*_*ell 37
这很好,因为编译器在发布版本中省略了它.这不是一种不好的做法,你不需要从源代码中删除它们(事实上,你可能不应该这样做).但你必须小心:
Debug.Assert(SomethingImportantThatMustExecute());
Run Code Online (Sandbox Code Playgroud)
很糟糕 - SomethingImportantThatMustExecute在发布时会被忽略; 你必须使用:
bool result = SomethingImportantThatMustExecute()
Debug.Assert(result);
Run Code Online (Sandbox Code Playgroud)
基本上,避免调用条件方法和部分方法时的副作用.
Jon*_*eet 11
这取决于你使用它的是什么.如果你在自己的方法中使用它进行断言,为了确保它们正常工作,我认为没关系 - 但我更喜欢单元测试来验证我能想到的一切.
这不是一个好主意(IMO)用它来验证传入输入-例如参数.在这种情况下,我认为以正常方式使用异常会更加一致:
if (foo == null)
{
throw new ArgumentNullException("foo");
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这种行为不应仅仅因为你正在运行发布代码而改变.
| 归档时间: |
|
| 查看次数: |
3063 次 |
| 最近记录: |