关于 assert 断言的思考

Posted 张驰Zhangchi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 assert 断言的思考相关的知识,希望对你有一定的参考价值。

关于 assert 断言的思考

断言的作用

assert模块主要用于编写程序的单元测试时使用,通过断言可以尽早发现错误。一般在测试环境使用,正式环境禁用。

断言的使用场景

使不使用断言可以先考虑以下如果断言的条件不满足,程序是否可以正常运行,如果可以,就不用使用了,如果不可以,就可以使用。

工程实践

在开发的过程中,如果输入参数不符合期望,尽量在第一时间断言中断执行。比如:

function getBlock(blockId: string): Block 
    assert(blockId, "Blockid is missing");

但是不需要针对类型进行断言,类型的断言应该由 Block 在编译阶段中断,如:

function getBlock(blockId: string): number 
    assert(isString(blockId)); /// 如果声明了强类型,则不用断言 blockId 是否为string。

在开发模式下,断言错误将直接通过 throw 抛出来。线上环境所有的断言错误都会被收集到错误上报平台,并且携带堆栈stack信息,以及用户信息。并且使用 console.error 将错误在控制台打印出来。

现代软件系统数据多样性会造就缺陷和反馈的多样性,断言系统与 Typescript 类型守护互为补充,为软件系统保驾护航

附录:

以上是关于关于 assert 断言的思考的主要内容,如果未能解决你的问题,请参考以下文章

Java 关于assert

关于web自动化定位元素(str:int)的text后,找到的id是变化的,如何处理?以及用text与int型的数据如何作assert断言?

Junit——Assert断言

【Python】assert断言

assert断言

[PHP] assert()断言检测函数