无限循环应用 – for(;;)
我试图理解for循环示例背后的概念
for (;;) { //write code }
我理解它的作用以及它是如何与while(true)相同的循环结构,但我的问题是……这是一个很好的编程实践,以及这种类型的循环结构应用于哪种应用程序?
在某些情况下,这是期望的行为。 例如,基于盒式游戏机的游戏通常在其主循环中没有退出条件,因为没有用于程序退出的操作系统; 循环运行直到控制台断电。
另一个例子是模块监听另一个模块的动作。 它需要一直听,所以听众必须听无限时间或直到程序关闭。 像套接字,线程和UIComponents。
无限循环的概念没有不好的做法,但如果它不是想要或者偏见你的系统的function,可以考虑它,就像你创建一个无意的无限循环或失去循环的程序控制。
使无限循环成为一个好习惯:
- 确保它是一个理想的行为。 如果它有停止条件,避免无限循环!
- 用
for(;;)
或while(true)
明确。 避免表达中的重言式,做到简单! - 使其具有容错能力,挽救预期的exception并为其提供正确的处理!
- 而最重要的! 做一个简单的无限循环!
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 }
这一切都取决于可读性,几个月后你可以轻松阅读和理解。