1

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

for (;;)
{
//write code
}

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

4

5 回答 5

3

在某些情况下,这是所需的行为。例如,基于卡带的游戏机上的游戏通常在其主循环中没有退出条件,因为没有可供程序退出的操作系统;循环一直运行,直到控制台关闭。

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

无限循环的概念没有不好的做法,但如果它不想要或不损害您的系统功能,则可以考虑,例如当您创建无意的无限循环或失去对循环的程序控制时。

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

  1. 确保这是所需的行为。如果它有停止条件,避免无限循环!
  2. for(;;)or明确表示while(true)。避免重言式表达,做简单!
  3. 使其具有容错性,拯救预期的异常并给予它们正确的处理!
  4. 还有最重要的!做一个简单的无限循环!
于 2012-08-12T15:06:05.083 回答
1
while(abortRequested)
{
  // ....
}

几乎等同于

while(true)
{
   // ...

   // ... dozens of lines of code ...

   if(abortRequested)
     break;

   // prepare next iteration
}

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

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

于 2012-08-12T15:02:14.153 回答
0

总的来说是可以的,没什么好担心的。这与程序员的喜好有关。

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

于 2012-08-12T15:00:04.337 回答
0

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

 while (true) {
     // Do infinite task
 }

这一切都归结为可读性,几个月后你可以轻松阅读和理解。

于 2012-08-12T15:01:00.357 回答
0

一种观点可能是: While 更像是基于事件/条件的 .. 在哪里运行循环,直到发生终止循环的事情。另一方面,for 循环更像是基于计数器,您要指定循环应该发生多少次。至少它对此有明确的规定。

当然,从技术上讲,两者都是相同的,它们都检查运行条件以启动循环周期。

于 2012-08-12T15:08:14.317 回答