Osc*_*Ryz 18 java assert assertions
这不是一个"问题"所以我正在制作CW.
该
assert
Run Code Online (Sandbox Code Playgroud)
关键字很棒!
它应该让你觉得你的自己对你编写的代码更有信心,但是,直到今天,当我创建一个小型测试类(<20行)时,我意识到自从它被引入以来从未使用它.
哎呀!我几乎没有使用记录器,这确实非常有用,但直到今天我才意识到我不使用断言.
你使用断言吗?如果不是,那是什么原因?
Bar*_*urt 14
我被教导在90年代使用了很多断言,他们很有道理.这是一个很好的防御性编码.
但是,我认为这已经被单元测试所取代,这实际上会强制代码运行并告诉它在哪里被破坏.调试断言需要有人实际运行调试代码并查看ui或日志.单元测试可以实现自动化.
Fal*_*ina 14
我一直都在使用它们.它们是练习"早期崩溃"理念的好方法,最好不得不解决为什么断言失败而不是必须处理坏/损坏的输出.
问题是你必须养成一种习惯.我很少看到其中的任何中间地带,人们要么不习惯它,几乎从不使用它们或人们使用它们,并且它们在整个代码中严格乱丢.你只需要注意到"哦,嘿,我在这里不假思索,让我明确确认它'断言(假设)'"
Rav*_*lau 11
我使用断言来确保我不会在代码中引入错误.如果我知道一个值应该在一个映射中,我断言(使用assert关键字).如果我知道参数永远不应该为null,我断言.如果我知道参数可以为null,那么我将检查它并抛出相应的异常.
我在Code Complete或Effective Java上阅读它 - 应该使用断言来检测编程错误 - 应该使用异常来处理异常但可能的情况.如果您知道该值不为null(由合同定义),则不需要在代码的每个方法上检查null,但如果值不为null则断言也没有坏处.仅当您为VM指定参数-ea时才会启用断言,如果禁用,它们不应影响应用程序的性能.
您也应该使用更多日志:-).了解何时使用跟踪,调试和信息,并确保记录应用程序执行的所有操作.当您必须弄清楚为什么某些东西在生产环境中不起作用时,它会让生活变得如此简单.
| 归档时间: |
|
| 查看次数: |
2759 次 |
| 最近记录: |