关于 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 断言的思考的主要内容,如果未能解决你的问题,请参考以下文章
关于web自动化定位元素(str:int)的text后,找到的id是变化的,如何处理?以及用text与int型的数据如何作assert断言?