2012-08-12 83 views
1

我试图了解背后的概念for循环例如无限循环的应用程序 - 为(;;)

for (;;) 
{ 
//write code 
} 

我理解它能做什么以及它是如何在相同的循环结构,而(真),但我的问题是......这是一个好的编程习惯,以及这种类型的循环结构应用于什么类型的应用程序?

回答

3

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

另一个例子是当一个模块听来自另一动作。它需要随时倾听,因此听众必须倾听无限的时间或直到节目关闭。像套接字,线程和UIComponents。

对无限循环的概念并没有不好的做法,但如果不想要或损害系统的功能,可以考虑它,就像创建无意循环或丢失循环的程序控制一样。

为了使无限循环的好做法:

  1. 确保它是一个预期的行为。如果它有停止状态,避免无限循环!
  2. for(;;)while(true)让它明确地。避免表达中的重言式,简单!
  3. 使其容错,拯救预期的异常并给予正确的治疗!
  4. 而且最重要!让一个简单无限循环!
0

总的来说没关系,没有什么可担心的。这关乎程序员的偏好。

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

0

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

while (true) { 
    // Do infinite task 
} 

这一切都归结到可读性,去与任何容易让你阅读和理解后几个月。

+2

我当然希望你的意思是'while(true)',毕竟这是Java。 – Jeffrey 2012-08-12 15:03:05

+0

哈哈呀,我今天写了一些C,感谢@ waldyr.ar的编辑。 – 2012-08-12 15:57:00

+0

@MichaelDillon欢迎您:) – 2012-08-12 16:14:33

1
while(abortRequested) 
{ 
    // .... 
} 

几乎等同于

while(true) 
{ 
    // ... 

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

    if(abortRequested) 
    break; 

    // prepare next iteration 
} 

另外,这也可能会在当所有非守护线程完成自动遭到终止,守护线程运行。因此,这些结构的语义一般是:

要保持默认运行下去,除非收到一些明确的终止事件。

+1

不是最好的做法来'打破'一个无限循环,这与流的混乱。一个'do-while'循环确实更好。 – 2012-08-12 18:29:54

0

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

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