Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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 这是一些天才的东西还是简单的坏代码?_Java_Template Engine - Fatal编程技术网

Java 这是一些天才的东西还是简单的坏代码?

Java 这是一些天才的东西还是简单的坏代码?,java,template-engine,Java,Template Engine,这是我在一个开源Java模板项目中发现的代码片段 有人知道这种构造有什么好处吗 final public Expression Expression() throws ParseException { Expression exp; exp = OrExpression(); {if (true) return exp;} throw new Error("Missing return statement in function"); } 这是草率的代

这是我在一个开源Java模板项目中发现的代码片段

有人知道这种构造有什么好处吗

  final public Expression Expression() throws ParseException {
   Expression exp;
    exp = OrExpression();
      {if (true) return exp;}
    throw new Error("Missing return statement in function");
  }

这是草率的代码。实际效果只是
return或expression()

我接受这样的代码有一个理由:有许多其他类似的方法,它们遵循类似的模式,但更复杂,因此这里的无用位不是无用的。然而,这是一个有点极端的例子


然而,
抛出新错误(“函数中缺少返回语句”)几乎没有任何借口。Java编译器将拒绝编译返回类型不是
void
且具有到达末尾的代码路径(不
返回
抛出
,或进入无限循环)的方法。这是一个好主意的唯一原因是,如果目的是允许编译不完整的代码-即在运行时而不是编译时失败,以便可以使用或测试代码的其他部分-但即使将其应用于所有方法也是一个坏主意。

这是草率的代码。实际效果只是
return或expression()

我接受这样的代码有一个理由:有许多其他类似的方法,它们遵循类似的模式,但更复杂,因此这里的无用位不是无用的。然而,这是一个有点极端的例子


然而,
抛出新错误(“函数中缺少返回语句”)几乎没有任何借口。Java编译器将拒绝编译返回类型不是
void
且具有到达末尾的代码路径(不
返回
抛出
,或进入无限循环)的方法。这是一个好主意的唯一原因是,如果目的是允许编译不完整的代码-即在运行时而不是编译时失败,以便可以使用或测试代码的其他部分-但即使将其应用于所有方法也是一个坏主意。

这是从JavaCC自动生成的代码。

这是一个从JavaCC自动生成代码。

这是一种返回或表达式()的非常复杂的方式
是否抛出新错误()
无法访问?@assylias:我也这么认为。我只是想知道为什么程序员会这样写代码?这是愚人节的玩笑吗?这是从旧版本的JavaCC(6.1之前)生成的代码,而从这个特定的库生成的代码可能是复杂的。找到这段代码的库的名称是什么?这是一种非常复杂的方法,可以
return或expression()
是否抛出新错误()
无法访问?@assylias:我也这么认为。我只是想知道为什么程序员会这样写代码?这是愚人节的玩笑吗?这是从旧版本的JavaCC(6.1之前)生成的代码,而从这个特定的库生成的代码可能是复杂的。你找到这段代码的库的名字是什么?嗯,有道理。嗯,有道理。