R..*_*R.. 43
如果您要检查没有输入合同以接受和解释它们的NULL指针参数,请使用assert,而不是条件错误返回.这样,调用者中的错误将立即被检测到并且可以修复,并且可以轻松地禁用生成构建中的开销.我质疑assert除了作为文件的价值; 解除引用NULL指针的段错误对于调试同样有效.
如果您将错误代码返回给已经证明自己错误的调用者,最可能的结果是调用者将忽略该错误,并且当错误的原始原因变得困难或者错误的原始原因发生时,错误的事情将在稍后发生.无法追查.为什么假设调用者会忽略您返回的错误是合理的?因为调用者已经忽略了错误返回malloc或者fopen其他一些特定于库的分配函数,这些函数返回NULL表示错误!
Kar*_*tel 28
在C++中,如果你不希望接受NULL指针,然后不抓住这个机会:接受一个引用,而不是.
深度防御原则是肯定的.如果这是一个外部API,那么完全必不可少.否则,至少有一个断言来协助调试API的滥用.
您可以记录合同,直到您脸红,但您不能在被叫方代码中防止不明智或恶意滥用您的功能.您必须做出的决定是滥用的可能成本.
在我看来,这不是责任问题.这是一个健壮的问题.
除非我对调用者有完全的控制权并且我必须优化即使是微小的速度改进,我总是检查NULL.
| 归档时间: |
|
| 查看次数: |
7291 次 |
| 最近记录: |