Java 这是一些天才的东西还是简单的坏代码?
这是我在一个开源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"); } 这是草率的代
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之前)生成的代码,而从这个特定的库生成的代码可能是复杂的。你找到这段代码的库的名字是什么?嗯,有道理。嗯,有道理。