我为什么要给If语句命名?

One*_*ros 4 java naming if-statement

我刚刚发现我可以为For和While语句命名.我知道如果你想打破或继续一个特定的循环它是有用的.
但为什么我要给一个名字?它看起来毫无用处

name: if(true){
    //do something
}
Run Code Online (Sandbox Code Playgroud)

这编译没有问题

Sar*_*ppy 10

如果你有一个带有名字的代码块,你可以使用break来退出它,这就是我找到的用于命名块的用法.

name: if(true) {
    // do something
    if(/* condition */) {
        break name;
    }
    // do more
}

它也适用于没有if:

name: {
    // do something
    if(/* condition */) {
        break name;
    }
    // do more
}

当我的工作出现在某些逻辑上存在一组保护条件时,以及另一组逻辑将会落入其中而不管警卫的结果如何.

另一个例子,其中替代结构更难以阅读和修改:

block: if(/* guard */) {

  // prep work

  if(/* guard */) {
    break block;
  }

  // prep work

  if(/* guard */) {
    break block;
  }

  // real work
}

虽然通常我使用裸块而不是if.


Pet*_*erL 6

您可以在任何语句块之前使用标签.这可能是最常用于循环,但在其他地方完全有效.