zoukankan
html css js c++ java
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有助于提高框架代码的正确性和减少框架代码的使用者的调试时间。
查看全文
相关阅读:
三种空格unicode(u00A0,u0020,u3000)表示的区别
python调用C++之pybind11入门(相互调用)
基于go手动写个转发代理服务
git rebase VS git merge
外挂
C#本地修改器
C# 人工智能开源库生物特征
深层信念网络
ASP.NET CORE(C#)与Spring Boot MVC(JAVA)
Net UI Spy工具:ManagedSpy
原文地址:https://www.cnblogs.com/diyunpeng/p/2052356.html
最新文章
sDashboard:简单的,轻量级的 jQuery 仪表板插件
精彩瞬间!15幅值得看看的自然摄影照片【组图】
CSS 魔法系列:纯 CSS 绘制各种图形《系列五》
设计前沿:16个优秀的国外单页网站制作案例
Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列二十】
2013年最佳的16个 Photoshop 设计教程推荐
经典一刻!16幅不能错过的精美摄影照片【组图】
对于 Web 开发很有用的 jQuery 效果制作教程
酷站欣赏:来自国外的一组耀眼的扁平化网站作品
20款风格独特的搜索框 PSD 设计素材免费下载
热门文章
2013年最新流行的响应式 WordPress 主题【上篇】
Foundation 5 发布!最先进的响应式前端框架
超赞!12套你没见过的社交媒体 & 社交网站图标
优秀网页设计:25个最佳的摄影师作品网站
Ideal Forms – 帮助你建立响应式 HTML5 表单
IKONS – 赞!264 款手工打造的免费矢量图标
Node.js Web 开发框架大全《路由篇》
创意前沿:18个来自国外的独具匠心的时钟设计
产品经理必备-设计十诫
Mac下安装配置Python2和Python3并相互切换使用
Copyright © 2011-2022 走看看
首先可以用在单元测试代码中。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有助于提高框架代码的正确性和减少框架代码的使用者的调试时间。