Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 何时在客户端中使用断言&;通用GWT代码_Java_Gwt_Assert_Design By Contract - Fatal编程技术网

Java 何时在客户端中使用断言&;通用GWT代码

Java 何时在客户端中使用断言&;通用GWT代码,java,gwt,assert,design-by-contract,Java,Gwt,Assert,Design By Contract,StackOverflow上有几个问题,讨论的是什么时候应该使用assert语句,而不是抛出一些异常。(示例、和 然而,我开始怀疑断言与抛出的传统智慧是基于您在JVM中运行的假设。在GWT世界中,您的Java被翻译成JavaScript并在浏览器的上下文中运行,这组权衡感觉有所不同:在运行I时,断言总是被编译掉在浏览器中,任何保持JavaScript大小较小的操作都是成功的,尤其是当web应用程序必须在移动手机上运行时。不过,断言确实可以在DevMode中运行,因此它们在开发过程中具有实用性 所

StackOverflow上有几个问题,讨论的是什么时候应该使用assert语句,而不是抛出一些异常。(示例、和

然而,我开始怀疑断言与抛出的传统智慧是基于您在JVM中运行的假设。在GWT世界中,您的Java被翻译成JavaScript并在浏览器的上下文中运行,这组权衡感觉有所不同:在运行I时,断言总是被编译掉在浏览器中,任何保持JavaScript大小较小的操作都是成功的,尤其是当web应用程序必须在移动手机上运行时。不过,断言确实可以在DevMode中运行,因此它们在开发过程中具有实用性

所以我的问题是:有没有人考虑过一套最佳实践规则来管理如何在GWT中使用assert语句?我的团队成员问过我“自从assert被编译出来后,拥有它们有意义吗?”,我想给他们一个好的答案

另外,有人对谷歌GWT开发者在这个问题上的理念有什么见解吗?看看GWT的源代码,他们似乎经常使用它。

谷歌说

仅将断言用于调试目的,而不用于生产逻辑,因为断言只能在GWT的开发模式下工作。默认情况下,它们由GWT编译器编译掉,因此在生产模式下没有任何效果,除非您显式启用它们

这与您所链接的问题的答案没有任何不同。Java代码是由javac以通常的方式编译还是由GWT编译为JavaScript, “assert”的意思是“若这不是真的,我有一个bug。”相反,表单的代码

if (condition) throw new Exception(msg);
意思是“如果这是真的,那么我们有一个意想不到的情况,程序将不得不处理。”


对于看不到断言的意义的团队成员,请解释他们应该有一组在启用断言的情况下运行的单元测试。如果测试具有良好的代码覆盖率,并且没有一个导致断言失败,那么断言语句指示的假设就被证明成立。

GWT编译器默认情况下删除它们,但如果愿意,可以保留它们。如果您认为断言在编译代码中有用,请在调用com.google.gwt.dev.Compiler时添加-ea命令行参数。然后,编译器将Java断言转换为JavaScript

Google Web Toolkit 2.3.0
    Compiler [-logLevel level] [-workDir dir] [-gen dir] [-style style] [-ea] [-XdisableClassMetadata] [-XdisableCastChecking] [-validateOnly] [-draftCompile] [-optimize level] [-compileReport] [-strict] [-localWorkers count] [-war dir] [-deploy dir] [-extra dir] module[s] 

     ...
      -ea Debugging: causes the compiled output to check assert statements

“常见问题解答”的链接实际上链接到了这个问题。你有真正的参考资料吗?修复了链接。谢谢你的反馈。