无限循环的应用程序 - 为(;;)
我试图了解背后的概念for循环例如无限循环的应用程序 - 为(;;)
for (;;)
{
//write code
}
我理解它能做什么以及它是如何在相同的循环结构,而(真),但我的问题是......这是一个好的编程习惯,以及这种类型的循环结构应用于什么类型的应用程序?
有些情况下,这是所需的行为。例如,基于盒式磁带游戏控制台的游戏通常在其主循环中没有退出条件,因为没有用于程序退出的操作系统;循环运行直到控制台关闭。
另一个例子是当一个模块听来自另一动作。它需要随时倾听,因此听众必须倾听无限的时间或直到节目关闭。像套接字,线程和UIComponents。
对无限循环的概念并没有不好的做法,但如果不想要或损害系统的功能,可以考虑它,就像创建无意循环或丢失循环的程序控制一样。
为了使无限循环的好做法:
- 确保它是一个预期的行为。如果它有停止状态,避免无限循环!
- 与
for(;;)
或while(true)
让它明确地。避免表达中的重言式,简单! - 使其容错,拯救预期的异常并给予正确的治疗!
- 而且最重要!让一个简单无限循环!
总的来说没关系,没有什么可担心的。这关乎程序员的偏好。
我喜欢while(true)
,从我的角度来看,这是无限循环的更优雅的形式。其他人可能更喜欢for(;;)
的方法。
这只是个人喜好的问题。举例来说,我更喜欢这种风格:
while (true) {
// Do infinite task
}
这一切都归结到可读性,去与任何容易让你阅读和理解后几个月。
while(abortRequested)
{
// ....
}
几乎等同于
while(true)
{
// ...
// ... dozens of lines of code ...
if(abortRequested)
break;
// prepare next iteration
}
另外,这也可能会在当所有非守护线程完成自动遭到终止,守护线程运行。因此,这些结构的语义一般是:
要保持默认运行下去,除非收到一些明确的终止事件。
不是最好的做法来'打破'一个无限循环,这与流的混乱。一个'do-while'循环确实更好。 – 2012-08-12 18:29:54
一个角度可能是: 虽然更像是基于事件/条件..在哪里运行循环,直到发生终止循环的事情。 另一方面,for循环更像是基于计数器的,您希望指定循环发生的次数。至少它有一个明确的规定。
当然在技术上两者都是相同的,它们都检查运行条件以启动循环周期。
我当然希望你的意思是'while(true)',毕竟这是Java。 – Jeffrey 2012-08-12 15:03:05
哈哈呀,我今天写了一些C,感谢@ waldyr.ar的编辑。 – 2012-08-12 15:57:00
@MichaelDillon欢迎您:) – 2012-08-12 16:14:33