断言主要用于检测传入参数是否合法。如果参数不合法则会报错并退出程序,因而只能用于测试开发阶段。
原则
断言的使用和参数的检测一样,在保证合理运行的基础上,参数的限制越少越好。
使用场景
FIXME 中使用
在使用 FIXME 的地方检测你需要关注的参数,如果没有要验证的参数,则可以不写。
示例代码摘抄自ffmpeg4.2.2的 libavcodec/encode.c 中的ff_alloc_packet2()
:
1 | if (avctx && 2*min_size < size) { // FIXME The factor needs to be finetuned |
非公有方法参数检测
在 JAVA 中的非公有方法的参数检测通常应该使用断言检测参数,而不使用正常的检查语句(此句摘录自《 Effective Java 第二版》23条)。