dsi*_*cha 5 error-handling assert
从生产代码中删除断言的典型论据是性能。这对我来说没有意义。是的,从性能关键的 5% 左右的代码中剥离一些断言可能是一种有用的优化。然而,对于另外 95% 的人来说,它们可能没有可测量的效果,并且断言只会增加这样的可能性:如果您的代码有错误,它会以一种易于诊断的方式快速失败。
我的大部分编程都是在 D 中完成的,它的enforce()功能基本上可以完成相同的assert()功能,只是它保留在发布版本中。我通常发现自己enforce()大部分时间都在使用,而且assert()只在少数enforce()太贵的地方使用。
除了性能之外,还有其他原因从发布版本中删除断言吗?如果不是,为什么语言不让断言的默认行为即使在发布版本中也始终执行,并提供第二个更冗长且更难记住的函数,类似的东西expensiveAssert()从发布版本中删除并建议仅在代码中性能关键的部分?
不仅如此。我认为在生产版本中保留断言会增加人们对什么文本(和/或源代码片段)最终出现在已发布的二进制文件中的偏执(想想如果它们最终出现在已发布的二进制文件中,代码注释会是什么样子!),这反过来又会增加人们的疑虑。不鼓励使用断言。
你的旅费可能会改变。
| 归档时间: |
|
| 查看次数: |
1612 次 |
| 最近记录: |