实际开发中 assert 用的多吗?

2020-07-23 09:34:04 +08:00
 wushigejiajia01

我是个后端 JAVA 开发, 搬砖三年多了

基本没看到有人用过 Assert, 最近在看一个项目中的代码, 发现有人用 Assert

百度查了一下才知道这个东西的作用, 初步理解就是 if...else 的另一种写法

关键这个东西已经被划上横线, 不建议使用了

我搜了一下这个项目里用的不算少, 大多是在 service 层入参的时候使用的, 这样有什么问题吗?

大家在实际开发中用的多吗? 有什么需要注意的呢?

6065 次点击
所在节点    Java
38 条回复
mahogany
2020-07-23 17:10:27 +08:00
线上用过。有时候不得不断言一些基本情况,如果输入有问题直接抛出错误(太懒,不想定义 Exception...)
egfegdfr
2020-07-23 17:45:28 +08:00
用过一段时间了,感觉很好用,可以让代码更简洁。减少 if .... else 嵌套
qwerthhusn
2020-07-23 18:05:59 +08:00
工作三年多了,不应该连这个都不知道啊。

Assert.xxx ,这个被画横线,一般用的是 Spring 提供的工具类。
画横线的意思是,不是不推荐用,而是后面需要提供一个 message 。。。
qwerthhusn
2020-07-23 18:06:34 +08:00
鼠标放上去看提示或者点进去看源码 Javadoc 的提示
pigspy
2020-07-23 18:12:39 +08:00
源码里面有很多啊
aguesuka
2020-07-23 19:05:00 +08:00
我怀疑我和楼上用的不是一个语言。谈起 assert 不应该是 assert 布尔表达式:错误提示吗?
zsdroid
2020-07-23 19:16:26 +08:00
aguesuka
2020-07-23 20:10:18 +08:00
你怎么知道是楼主说的是 spring 的
GrayXu
2020-07-23 20:20:17 +08:00
第一次写的时候用吧,因为不是写一小段就能测试,有 assert 在 debug 时候方便定位些
abc612008
2020-07-23 21:37:07 +08:00
都不写测试的吗……
sun1993
2020-07-23 21:42:04 +08:00
做 UT 会用,不过现在用 mokito,也不太用 java 原生的断言了。。
zsdroid
2020-07-23 22:58:44 +08:00
@aguesuka #28 见 3 楼
beiwei2008
2020-07-23 22:59:26 +08:00
@egfegdfr assert 怎么用于减少 if .... else 嵌套呢?不是测试的时候直接抛出异常程序结束运行吗?你说的是 java 还是其他语言?
egfegdfr
2020-07-24 09:39:25 +08:00
@beiwei2008 我说的 assert 应该和你理解的不一样,我这个是自定义的 assert,和自定义异常以及异常全局处理统一使用,可以减少代码量
eg:
if (a==null) {
throw new xxxException("sfsdfsdfsd")
}


// dosomething
用自定义 assert 可以这么写:
xxxassert.isnull(a,"这里是错误信息")
// dosomething
atonku
2020-07-24 11:22:23 +08:00
不用
yjxjn
2020-07-26 11:27:21 +08:00
单元测试经常用啊。
xixinimei
2020-09-29 02:38:53 +08:00
单元测试常用。Assert 抛出的是 Error,和 Exception,除非你需要的是 Error,而不是 Exception
xixinimei
2020-09-29 02:39:34 +08:00
@xixinimei 更正,“不是 Exception”

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/692389

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX