Dar*_*der 19 .net c# production code-contracts
就我在一本简单的书中所读到的,代码契约可能会降低运行时性能.
是否可以在生产中禁用代码合同?
Ste*_*ary 12
总结一下:
有些人更喜欢将Preconditions包含在他们的Release版本中.如果通过NuGet分发,这尤其有用,因为它们不支持Code Contract dll.对于我的NuGet包,我正在迁移到Release版本中包含Preconditions,但也为"没有Preconditions的Release"构建单独下载.
性能差异非常小,不会以明显的方式影响您的代码.除非你正在开发一些实时股票交易系统,否则我真的不会担心它.
至于禁用生产中的代码,我宁愿得到代码契约的额外保护,而不是一些可能模糊的错误.代码合同中的错误将告诉您合同被违反的确切位置和原因,而不是仅仅因为在调用堆栈树的5个级别中传递了一些错误数据而不得不深入挖掘一些深度调用堆栈.
@svanryckeghem和@Stephen Cleary:如果您正在使用或计划使用Contract.Requires<TException>并且未启用"运行时合同检查",则会发现运行时失败,因为IL重写器(ccrewrite.exe)需要绑定到代码合同.然后,您将需要启用运行时合同检查才能使其生效.
恕我直言,使用Contract.Requires<TException>()远比Contract.Requires()你控制抛出的异常类型更有用.
| 归档时间: |
|
| 查看次数: |
9313 次 |
| 最近记录: |