Java:在任何地方无条件跳转到外部作用域
假设我有一个执行foo的程序。baz是一个需要测试的新功能Java:在任何地方无条件跳转到外部作用域,java,Java,假设我有一个执行foo的程序。baz是一个需要测试的新功能 public static void main (String [] args) { foo (); // existing baz (); // new } 为了测试baz,我将把它放在foo面前。所以不用再等富了 我还想在baz之后结束(跳转到外部范围)。这是关于测试baz的,之后我想退出。但我不想把foo放在注释中(也许它比一行代码复杂得多) 我脑子里最清楚的就是这个 public static void mai
public static void main (String [] args)
{
foo (); // existing
baz (); // new
}
为了测试baz,我将把它放在foo面前。所以不用再等富了
我还想在baz之后结束(跳转到外部范围)。这是关于测试baz的,之后我想退出。但我不想把foo放在注释中(也许它比一行代码复杂得多)
我脑子里最清楚的就是这个
public static void main (String [] args)
{
baz ();
if (1==1) return; // unconditional jump to outer scope
foo ();
}
我不喜欢这样
如果(1==1)
但我不知道还有什么选择
不允许简单返回(编译器错误,无法访问代码)
只有当我们讨论main时,System.exit才会起作用,但如果我的代码处于更大的上下文中,它就不会起作用。我想回到外部范围
有没有更好的想法?一种替代方法是使用行业标准的测试驱动开发(TDD)方法 使用标准测试运行程序(如或)编写单元测试。如果采用这种方法,您将不必仅仅为了测试而修改生产代码 从测试类中,直接调用
baz()
。作为一个额外的好处,您现在还有一个测试,它将在现在和将来验证此方法的行为
我建议你仔细阅读TDD这个话题。有很多好的资源可用。这不是一个灵丹妙药,但使用这种方法有很多好处。这是一种非常奇怪的测试方法。但是我不明白,如果您在再次快速测试后立即删除它,为什么会有关系。仅供参考,您可以将
1==1
替换为true
。或者,您可以通过将定义为true的表达式替换为逻辑上仅为true的表达式(例如,System.currentTimeMillis()>0
)来避免警告。但我不知道你到底想做什么。编译器不允许在无条件返回后使用代码是有原因的代码>。