0
点赞
收藏
分享

微信扫一扫

关于 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 类型守护互为补充,为软件系统保驾护航

附录:

  • ​​https://www.jianshu.com/p/1a65d5b9a451​​
  • ​​https://nodejs.org/api/assert.html​​


举报

相关推荐

0 条评论