在与许多开发人员开发大型C++编程项目时,我们遇到了在代码中不恰当地使用assert()的问题,这导致了断言确实发生并且产品崩溃的质量差.
问题是适用于assert()的适用原则是什么?何时使用assert()以及何时不使用?是否有一个标准列表,每个断言应该通过才能合法?我们如何鼓励正确使用assert()?
作为第一个解决方案,我会说assert()应该只用于记录一个被认为无法达到的条件,并且应该在运行时将其识别为assert()故障,因为它会出现,因为编程假设正在被违反.
人们可以比这更好吗?你对assert()的体验是什么?
cod*_*nix 11
使用来自外部(方法外部或程序外部)的错误条件的异常,例如参数检查和缺失/有缺陷的外部资源,如文件或连接或用户输入.
使用断言来指示内部缺陷,如编程错误,不应发生的条件,例如类/方法不变量和无效的程序状态.