今天在写代码时看到idea有个assert的提示,好奇心驱使之下对它一探究竟,跟着一条一块看看吧
断言(assert)的含义
assert() 的用法像是一种"契约式编程",在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作。
其实就相当于一个 if 语句:
if(假设成立) { 程序正常运行; } else { 报错&&终止程序!(避免由程序运行引起更大的错误) }
但是这样写的话,就会有无数个 if 语句,甚至会出现,一个 if
语句的括号从文件头到文件尾。并且大多数情况下,我们要进行验证的假设,只是属于偶然性事件,又或者我们仅仅想测试一下,一些最坏情况是否发生,所以这里有了
assert()。
好处
assert 的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向 stderr 打印一条出错信息,然后通过调用 abort
来终止程序运行。
坏处
使用 assert 的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。
用法总结
基本应用
在函数开始处检验传入参数的合法性
int resetBufferSize(int nNewSize) { //功能:改变缓冲区大小, //参数:nNewSi