Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        3年前关闭。
                    
                
        

我正在参加有关Java的会议,演讲者说在break循环中使用while语句是一种不好的做法。他说可以使用它,但是从“良好编码实践”的角度来看,不应使用它。他无法令人满意地解释为什么会这样。

但是,他还提到在for循环的情况下此限制无效。谁能对此有所启发?

编辑:我不是在谈论while(true)。一般情况下(条件)。

最佳答案

IMO,在while循环中使用break还不错。但是我可以猜到演讲者为什么这么说。

所以,如果我有一个while循环,像这样:

while (condition1) {
    if (condition2) {
        break;
    }
    // do other stuff
}


您绝对可以通过以下方式使代码更短:

while(condition1 && !condition2) {
    // do other stuff
}


发言者可能认为while循环中的break并不是必需的,因为您可以只写所有应该写它们的条件,即在括号中。

然而,这种情况并非如此。如果我有这个while循环:

while (condition1) {
    // do other stuff
    if (condition2) {
        break;
    }
}


您如何更改它以使其不使用break

while (condition1) {
    // do other stuff
    if (condition2) {
        condition1 = false;
    }
}


这对我来说似乎并不好。

让我们将其放入一段有意义的代码中。您认为哪个更具可读性:

while(noWallInFront) {
    walk();
    if (sawFriend) {
        sayHi();
        break;
    }
}


要么

while(noWallInFront) {
    walk();
    if (sawFriend) {
        sayHi();
        noWallInFront = false;
    }
}


显然是第一个吧?第二个听起来像是您像对待墙一样对待您的朋友。

07-24 09:45
查看更多