java assert int_java中的assert(转载)2
转载自:http://lavasoft.blog.51cto.com/62575/43735/ 第11楼的说法
assert 有很大的用处
首先可以用在单元测试代码中。junit侵入性是很强的,如果整个工程大量的代码都使用了junit,就难以去掉或者是选择另外一个框架。如果单元测试代码很多,并且想复用这些单元测试案例,应该选择assert而不是junit,便于使用别的单元测试框架,比如TestNG。同理正式的功能代码根本就不应该出现Junit,应该使用assert.
assert主要适合在基类,框架类,接口类,核心代码类,工具类中。换言之,当你的代码的调用者是另外一个程序员写得业务代码,或者是另外一个子系统时,就很有必要使用它。比如你做了一个快速排序的算法
public static List quickSort(List list){
assert list != null;
// 申请临时空间
//开始排序
for(int i : list){
//
}
}
这种情况下,如果不检查传入参数的正确性,会抛出一个莫名其妙的空指针错误。你的调用者可能并不清楚你代码的细节,在一个系统的深处调试一个空指针错误是很浪费时间的。就应该直接明确的告诉你的调用者是传入的参数有问题。否则他会怀疑你的代码有BUG。使用assert可以避免两个程序员之间互相指责对方写的代码有问题。
assert适用那些你知道具体是什么错误,你和你的调用者已经约定应该由你的调用者去排除或检查的错误。你通过一个断言告诉你的调用者。assert不适用那些外部系统造成的错误,比如用户输入数据的错误,某个外部文件格式错误。这些错误不是你的调用者而是用户造成的,甚至于不属于异常,因为出现输入错误和文件格式错误是经常的,这些错误应该由业务代码去检查。
assert比较适合于被频繁调用的 基类,框架代码,工具类,核心代码,接口代码中,这正是它在运行时被去掉的原因。测试代码应该在测试阶段开启-ea参数,便于对系统深处的核心代码做仔细的测试。
Java较少使用assert的原因是Java有很完整的OO体系,强制类型转换出现得较少,所以不需要类似c那样需要频繁的检查指针的类型是否正确,指针是否为空。同时Java也很少直接管理内存或缓冲区,所以不需要频繁的检查传入的缓冲区是否为空或者是已经越界。
但使用好assert有助于提高框架代码的正确性和减少框架代码的使用者的调试时间。
java assert int_java中的assert(转载)2相关推荐
- junit4 assert类中的assert方法总结
junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类. 1.assertTrue/False([String message,]boolean cond ...
- java integer == int_Java中int和Integer的区别详解
1.Java 中的数据类型分为基本数据类型和复杂数据类型 int是前者>>integer 是后者(也就是一个类) 2.初始化时>> int i =1; Integer i= n ...
- java static int_Java中static关键字概述
例如一个学生类中,我们需要统计下学生类中学生对象的数量,此时数量要定义为静态变量: 示例代码: package com.java1995; public class Student { int id= ...
- java中的assert
Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在Java中,ass ...
- Java基础の乱弹琴一:assert关键字
一.概述 assert:表示断言 二.语法 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默 ...
- assert文件夹 设置android_android使用build.xml配置assert文件中不压缩的类型文件
问题: 在做文本文件读取时,从assert文件中获取文件 getResources().getAssets().openFd("test.txt").getFileDescript ...
- java assert false_Java陷阱之assert关键字
Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在Java中,ass ...
- Python中的assert用法
Python中的assert用法 本文转载自Python中不尽如人意的断言Assertion,如有侵权,立马删除! 使用assert断言是学习Python一个非常好的习惯,Python assert ...
- C++中#error/assert/static_assert的区别及使用
C++ 语言支持可帮助您调试应用程序的三个错误处理机制:#error 指令.static_assert 关键字和 assert (CRT) 宏.所有的三种机制都会发出错误消息. #error可看做预编 ...
最新文章
- boost::geometry::partition用法的测试程序
- 1035 插入与归并 (25 分)(c++)
- 前端学习 -- 内联框架iframe
- Python3 嵌套函数
- [译] 单元测试,精益创业,以及两者之间的关系
- SAP云平台对Kubernetes的支持
- CodeSmith--SchemaExplorer类结构详细介绍
- linux 定时备份mysql数据库
- 可变参数(不定项参数)
- Linux关闭开启防火墙命令
- 从零开始学前端:形变(小游戏:3D翻滚盒子) --- 今天你学习了吗?(CSS:Day21)
- 17.电话号码的字母组合(力扣leetcode) 博主可答疑该问题
- 推荐几个很好的资源下载网站
- hadoopsnappy解压_Hadoop安装配置snappy压缩
- 由frankmocap得到的.pkl文件转为.bvh或者.fbx
- 如何用计算机算p,App Store 上的“计算器++P”
- 基于Matlab的火灾预警系统
- mpp文件能转换成PDF
- table vue 背景图片_table中background背景图片自动拉伸
- dockers 的简单使用