我试图理解 for 循环示例背后的概念
for (;;)
{
//write code
}
我了解它的作用以及它与 while(true) 的循环结构如何相同,但我的问题是……这是一种好的编程实践吗?这种类型的循环结构适用于什么样的应用程序?
在某些情况下,这是所需的行为。例如,基于卡带的游戏机上的游戏通常在其主循环中没有退出条件,因为没有可供程序退出的操作系统;循环一直运行,直到控制台关闭。
另一个例子是当一个模块监听另一个模块的动作时。它需要一直听,所以听者必须听无限时间或直到程序关闭。像套接字、线程和 UIComponents。
无限循环的概念没有不好的做法,但如果它不想要或不损害您的系统功能,则可以考虑,例如当您创建无意的无限循环或失去对循环的程序控制时。
为了使无限循环成为一个好习惯:
for(;;)
or明确表示while(true)
。避免重言式表达,做简单!while(abortRequested)
{
// ....
}
几乎等同于
while(true)
{
// ...
// ... dozens of lines of code ...
if(abortRequested)
break;
// prepare next iteration
}
或者,这也可能在守护线程中运行,当所有非守护线程完成时,该线程会自动终止。所以这些结构的语义通常是:
默认情况下应该永远运行,除非收到一些明确的终止事件。
总的来说是可以的,没什么好担心的。这与程序员的喜好有关。
我更喜欢while(true)
,从我的角度来看,它是更优雅的无限循环形式。其他人可能更喜欢for(;;)
方法。
这只是个人喜好问题。例如,我更喜欢这种风格:
while (true) {
// Do infinite task
}
这一切都归结为可读性,几个月后你可以轻松阅读和理解。
一种观点可能是: While 更像是基于事件/条件的 .. 在哪里运行循环,直到发生终止循环的事情。另一方面,for 循环更像是基于计数器,您要指定循环应该发生多少次。至少它对此有明确的规定。
当然,从技术上讲,两者都是相同的,它们都检查运行条件以启动循环周期。