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

时间:2012-04-01 11:33:22

标签: 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");
  }

2 个答案:

答案 0 :(得分:3)

这是邋code的代码。实际效果只是return OrExpression();

我接受这样的代码有一个借口:有许多类似的其他方法,它遵循类似的模式,但更复杂,这样无用的位在这里并非无用。然而,这是一个极端的例子。

然而throw new Error("Missing return statement in function");几乎没有任何借口。 Java编译器将拒绝编译一个返回类型不是void并且具有到达末尾的代码路径的方法(不returnthrow ,或进入无限循环)。这是一个好主意的唯一原因是,如果意图是允许不完整的代码编译 - 即在运行时失败而不是编译时间,以便可以使用或测试代码的其他部分 - 但即便将它应用于所有方法也是一个坏主意。

答案 1 :(得分:1)

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