重构标记的循环

Mo.*_*Mo. 18 java refactoring label

我确信之后标记符/继续是一个总的"诺诺"在这里,我需要帮助去除标签了我的代码.

我有一个方阵和一个长度相同的矢量.向量中已经有一些值,取决于矩阵中的值,循环中的向量发生了变化.

我希望,代码片段基本上是可以理解的......

vectorLoop:
for( int idx = 0; idx < vectorLength; idx++) {
    if( conditionAtVectorPosition( v, idx ) ) continue vectorLoop;

    matrixLoop:
    for( rowIdx = 0; rowIdx < n; rowIdx++ ) {
        if( anotherConditionAtVector( v, rowIdx ) ) continue matrixLoop;
        if( conditionAtMatrixRowCol( m, rowIdx, idx ) ) continue vectorLoop;
    }
    setValueInVector( v, idx );
}     
Run Code Online (Sandbox Code Playgroud)

请说服我,没有标签就有更可读/更好的版本.

Mar*_*ing 34

看看到目前为止提出的解决方案:

  • 它们看起来都比原来的可读性差,因为它们涉及在代码机制上花费更多代码而不是算法本身

  • 其中一些已被破坏,或者在编辑之前.最令人讨厌的是,人们不得不非常认真地思考如何在没有标签的情况下编写代码并且不要破坏任何东西.

  • 有些人会因为两次运行相同的测试而受到性能损失,这可能并不总是微不足道.替代方案是存储和传递圆形布尔值,这会变得很难看.

  • 将代码的相关部分重构为方法实际上是一种无操作:它重新排列代码在文件中的布局方式,但不会影响它的执行方式.

所有这些让我相信,至少在这个问题的情况下,标签是正确的解决方案,不需要重构.当然,有些情况下标签使用不当,应该重构.我认为它不应该被视为一些牢不可破的规则.