当前位置:  开发笔记 > 编程语言 > 正文

Java编码标准/最佳实践 - 中断/继续标签的命名约定

如何解决《Java编码标准/最佳实践-中断/继续标签的命名约定》经验,为你挑选了4个好方法。

有时标记的中断或继续可以使代码更具可读性.

OUTERLOOP: for ( ;/*stuff*/; ) {
    //...lots of code

    if ( isEnough() ) break OUTERLOOP;
    //...more code
}

我想知道标签的常见惯例是什么.全部大写?第一次上限?



1> Marcus Downi..:

我不明白这个"不使用标签"的规则来自哪里.在执行非平凡的循环逻辑时,断开或继续的测试并不总是整齐地位于周围块的末尾.

outer_loop:
for (...) {
  //  some code
  for (...) {
    //  some code
    if (...)
      continue outer_loop;
    //  more code
  }
  //  more code
}

是的,像这样的案件确实一直在发生.人们建议我使用什么呢?像这样的布尔条件?

for (...) {
  //  some code
  boolean continueOuterLoop = false;
  for (...) {
    //  some code
    if (...) {
      continueOuterLoop = true;
      break;
    }
    //  more code
  }
  if (continueOuterLoop)
    continue;
  //  more code
}

呸! 将其重构为一种方法并不能减轻这种情况:

boolean innerLoop (...) {
  for (...) {
    //  some code
    if (...) {
      return true;
    }
    //  more code
  }
  return false;
}

for (...) {
  //  some code
  if (innerLoop(...))
    continue;
  //  more code
}

当然它有点漂亮,但它仍然传递一个多余的布尔值.如果内部循环修改了局部变量,那么将其重构为方法并不总是正确的解决方案.

那么为什么你们都反对标签呢?给我一些坚实的理由,以及上述案例的实际替代方案.


*四年后更新:*Scala和Clojure等功能语言的趋势越来越明显,不使用标签的建议有充分理由.但对于普通的Java,我上面的答案仍然存在.
好奇的是,票数最高的答案根本无法回答原始问题。(“ *我想知道标签的通用约定是什么。全部大写?第一个大写?*”)

2> Craig..:

如果你必须使用它们使用大写字母,这会引起对它们的注意,并将它们单独错误地解释为"类"名称.引起对它们的关注还有一个额外的好处,就是能够抓住某个人的眼睛并重构你的代码并删除它们.;)



3> RodeoClown..:

惯例是完全避免标签.

使用标签打破循环的有效理由非常非常少.突破是可以的,但你可以通过稍微修改你的设计来消除破坏的需要.在您给出的示例中,您将提取"许多代码"部分并将它们放在具有有意义名称的单个方法中.

for ( ;/*stuff*/; ) 
{
    lotsOfCode();

    if ( !isEnough() )
    {
        moreCode();
    }
}

编辑:看过有问题的实际代码(在这里),我认为使用标签可能是使代码可读的最佳方式.在大多数情况下使用标签是错误的方法,在这种情况下,我认为它很好.



4> Anders Sandv..:

Sun的Java代码风格似乎更喜欢以与变量相同的方式命名标签,这意味着驼峰的情况是小写的第一个字母.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有