无限循环应用 – for(;;)

我试图理解for循环示例背后的概念

for (;;) { //write code } 

我理解它的作用以及它是如何与while(true)相同的循环结构,但我的问题是……这是一个很好的编程实践,以及这种类型的循环结构应用于哪种应用程序?

在某些情况下,这是期望的行为。 例如,基于盒式游戏机的游戏通常在其主循环中没有退出条件,因为没有用于程序退出的操作系统; 循环运行直到控制台断电。

另一个例子是模块监听另一个模块的动作。 它需要一直听,所以听众必须听无限时间或直到程序关闭。 像套接字,线程和UIComponents。

无限循环的概念没有不好的做法,但如果它不是想要或者偏见你的系统的function,可以考虑它,就像你创建一个无意的无限循环或失去循环的程序控制。

使无限循环成为一个好习惯:

  1. 确保它是一个理想的行为。 如果它有停止条件,避免无限循环!
  2. for(;;)while(true)明确。 避免表达中的重言式,做到简单!
  3. 使其具有容错能力,挽救预期的exception并为其提供正确的处理!
  4. 而最重要的! 做一个简单的无限循环!
 while(abortRequested) { // .... } 

几乎相当于

 while(true) { // ... // ... dozens of lines of code ... if(abortRequested) break; // prepare next iteration } 

或者,这也可以在守护程序线程中运行,该守护程序线程在完成所有非守护程序线程时自动终止。 所以这些结构的语义一般是:

默认情况下应该保持永久运行,除非收到一些明确的终止事件。

总的来说没关系,没什么值得担心的。 这是程序员的偏好。

我更喜欢while(true) ,从我的角度来看它是无限循环的更优雅的forms。 其他人可能更喜欢for(;;)方法。

一个观点可能是:虽然更像是基于事件/条件。在哪里运行循环,直到发生终止循环的事情。 另一方面,for循环更像是基于计数器,您希望指定循环发生的次数。 至少它有明确的规定。

当然,在技术上它们都是相同的,它们都检查运行条件以开始循环循环。

这只是个人喜好的问题。 例如,我更喜欢这种风格:

  while (true) { // Do infinite task } 

这一切都取决于可读性,几个月后你可以轻松阅读和理解。