runxinzhi.com
首页
百度搜索
Assert理解(51cto) 规格严格
assert 有很大的用处
首先可以用在单元测试代码中。junit侵入性是很强的,如果整个工程大量的代码都使用了junit,就难以去掉或者是选择另外一个框架。如果单元测试代码很多,并且想复用这些单元测试案例,应该选择assert而不是junit,便于使用别的单元测试框架,比如TestNG。同理正式的功能代码根本就不应该出现Junit,应该使用assert.
assert主要适合在基类,框架类,接口类,核心代码类,工具类中。换言之,当你的代码的调用者是另外一个程序员写得业务代码,或者是另外一个子系统时,就很有必要使用它。比如你做了一个快速排序的算法
public
static
List
<
Integer
>
quickSort(List
<
Integer
>
list){
assert
list
!=
null
;
//
申请临时空间
//
开始排序
for
(
int
i : list){
//
}
}
这种情况下,如果不检查传入参数的正确性,会抛出一个莫名其妙的空指针错误。你的调用者可能并不清楚你代码的细节,在一个系统的深处调试一个空指针错误是很浪费时间的。就应该直接明确的告诉你的调用者是传入的参数有问题。否则他会怀疑你的代码有BUG。使用assert可以避免两个程序员之间互相指责对方写的代码有问题。
assert适用那些你知道具体是什么错误,你和你的调用者已经约定应该由你的调用者去排除或检查的错误。你通过一个断言告诉你的调用者。assert不适用那些外部系统造成的错误,比如用户输入数据的错误,某个外部文件格式错误。这些错误不是你的调用者而是用户造成的,甚至于不属于异常,因为出现输入错误和文件格式错误是经常的,这些错误应该由业务代码去检查。
assert比较适合于被频繁调用的 基类,框架代码,工具类,核心代码,接口代码中,这正是它在运行时被去掉的原因。测试代码应该在测试阶段开启-ea参数,便于对系统深处的核心代码做仔细的测试。
Java较少使用assert的原因是Java有很完整的OO体系,强制类型转换出现得较少,所以不需要类似c那样需要频繁的检查指针的类型是否正确,指针是否为空。同时Java也很少直接管理内存或缓冲区,所以不需要频繁的检查传入的缓冲区是否为空或者是已经越界。
但使用好assert有助于提高框架代码的正确性和减少框架代码的使用者的调试时间。
相关阅读:
滑动窗口最大值
uber.zap性能验证
【spring框架】AOP的Annotation实现(下)
Spring Boot实战:Spring Boot使用AOP的正确姿势 Spring AOP术语 通知 连接点 切点 切面 引入 织入
Git极简教程(3)branch级别的操作,合并分支 拉取最新代码git pull 包含( git fetch origin 和 git merge origin/master )
当使用git branch r是当分支有很多的时候出现end 使用:q可以退出
Java异常类型及处理 Throwable在异常类层次结构的顶层,在AOP中用到
Git极简教程(2)remote级别的操作,remote(多个分支的集合体)我们叫做origin,origin/master一般是主分支。origin/dev 开发分支,origin/zhangsan 开发者张三的分支 都应该复制master,基于master进行开发迭代
spring aop获取方法上与类上的注解
自定义的异常类,用instanceof判断类型错误
原文地址:https://www.cnblogs.com/diyunpeng/p/2052356.html
最新文章
spark源码(五)Master recive方法总结
sparksql 优化
sparksql 函数大全
spark源码(四)Master recive方法
线性代数 矩阵对角化
连续段计数问题小记
Silence 主题配置代码
特殊符号
NTP对时服务器
等长操作
热门文章
豆瓣打开日记跳转
硬件常用参数设置
Windows安装后的常用设置
U盘安装win11提示找不到install.wim文件
Cadence Orcad CIS元件库配置
科目三路考
LDO选型注意
recovery checklist
【考试总结】20220704
正则表达式匹配
Copyright © 2020-2023
润新知
首先可以用在单元测试代码中。junit侵入性是很强的,如果整个工程大量的代码都使用了junit,就难以去掉或者是选择另外一个框架。如果单元测试代码很多,并且想复用这些单元测试案例,应该选择assert而不是junit,便于使用别的单元测试框架,比如TestNG。同理正式的功能代码根本就不应该出现Junit,应该使用assert.
assert主要适合在基类,框架类,接口类,核心代码类,工具类中。换言之,当你的代码的调用者是另外一个程序员写得业务代码,或者是另外一个子系统时,就很有必要使用它。比如你做了一个快速排序的算法
assert list != null;
// 申请临时空间
//开始排序
for(int i : list){
//
}
}
这种情况下,如果不检查传入参数的正确性,会抛出一个莫名其妙的空指针错误。你的调用者可能并不清楚你代码的细节,在一个系统的深处调试一个空指针错误是很浪费时间的。就应该直接明确的告诉你的调用者是传入的参数有问题。否则他会怀疑你的代码有BUG。使用assert可以避免两个程序员之间互相指责对方写的代码有问题。
assert适用那些你知道具体是什么错误,你和你的调用者已经约定应该由你的调用者去排除或检查的错误。你通过一个断言告诉你的调用者。assert不适用那些外部系统造成的错误,比如用户输入数据的错误,某个外部文件格式错误。这些错误不是你的调用者而是用户造成的,甚至于不属于异常,因为出现输入错误和文件格式错误是经常的,这些错误应该由业务代码去检查。
assert比较适合于被频繁调用的 基类,框架代码,工具类,核心代码,接口代码中,这正是它在运行时被去掉的原因。测试代码应该在测试阶段开启-ea参数,便于对系统深处的核心代码做仔细的测试。
Java较少使用assert的原因是Java有很完整的OO体系,强制类型转换出现得较少,所以不需要类似c那样需要频繁的检查指针的类型是否正确,指针是否为空。同时Java也很少直接管理内存或缓冲区,所以不需要频繁的检查传入的缓冲区是否为空或者是已经越界。
但使用好assert有助于提高框架代码的正确性和减少框架代码的使用者的调试时间。