For loop 我应该使用'while(true)'还是'for(;;)`(在支持两者的语言中)?
可能重复:For loop 我应该使用'while(true)'还是'for(;;)`(在支持两者的语言中)?,for-loop,while-loop,For Loop,While Loop,可能重复: 在while(true)或for(;;)都表示“永远循环”的语言中,我应该使用哪个?在我看来,while(true)更清晰 任何半体面的编译器都将以相同的方式编译这两个文件(至少经过优化)。 因此,你应该选择你认为更清晰的形式。在我看来,而(true)更清晰 任何半体面的编译器都将以相同的方式编译这两个文件(至少经过优化)。 因此,你应该选择你认为更清晰的形式。我更喜欢while(true),因为我认为它更直观、优雅,并且在哲学上更有趣 然而,这最终只是一个风格问题。我更喜欢whi
在
while(true)
或for(;;)
都表示“永远循环”的语言中,我应该使用哪个?在我看来,while(true)
更清晰
任何半体面的编译器都将以相同的方式编译这两个文件(至少经过优化)。因此,你应该选择你认为更清晰的形式。在我看来,
而(true)
更清晰
任何半体面的编译器都将以相同的方式编译这两个文件(至少经过优化)。因此,你应该选择你认为更清晰的形式。我更喜欢while(true),因为我认为它更直观、优雅,并且在哲学上更有趣 然而,这最终只是一个风格问题。我更喜欢while(真的),因为我认为它更直观、优雅,并且在哲学上更有趣
然而,这最终只是一个风格问题。按重要性顺序:
编辑:我个人更喜欢“while(true)”(包括空格),但我很少提到列表中的第5点。按重要性排序:
for(;;)
for(;;)
没有明显的语义价值。鉴于
while(true)
几乎可以被任何一个相当聪明的非程序员所理解,因为它更接近于自然语言
没有明显的语义价值。鉴于
while(true)
任何一个相当聪明的非程序员几乎都能理解,因为他们离自然语言的等价物要近得多。我最近问了一个问题: 虽然我的发言是针对具体语言的,但其中一些人就这个问题发表了看法 就个人而言,我更喜欢
while(true)
,因为我觉得for(;;)
遗漏了几乎必要的部分。我对此有点强迫症,我知道它们不是必需的,但我觉得没有参数的for
看起来不完整。显然,有些情况下您不需要某些参数,但是while(true)
在我看来在语法上更完整,因为这样的循环是有保证的
总而言之,这(从一个好的角度)是相当没有意义的。与您一起工作的开发人员应该能够理解他们是同一件事,并且(至少在C语言中,根据我的问题)他们编译成完全相同的东西。任何因为你做了一件而不是另一件而抱怨的人,似乎他们的优先顺序有点不正常。我最近问了一个问题: 虽然我的发言是针对具体语言的,但其中一些人就这个问题发表了看法 就个人而言,我更喜欢
while(true)
,因为我觉得for(;;)
遗漏了几乎必要的部分。我对此有点强迫症,我知道它们不是必需的,但我觉得没有参数的for
看起来不完整。显然,有些情况下您不需要某些参数,但是while(true)
在我看来在语法上更完整,因为这样的循环是有保证的
总而言之,这(从一个好的角度)是相当没有意义的。与您一起工作的开发人员应该能够理解他们是同一件事,并且(至少在C语言中,根据我的问题)他们编译成完全相同的东西。如果有人因为你做了一件而不做另一件而抱怨,他们的优先级似乎有点不合理。任何一个优秀的开发人员都会把这两件事都忽略掉,而不会感到困惑。想用什么就用什么。任何一个优秀的开发人员都会跳过这两个步骤而不会感到困惑。想用什么就用什么。我更喜欢
do {
// ....
} while(true);
它将无限循环概念的实现选择从循环开始的显著位置降级
如果这是C++或C,只需创建自己的宏来更好地抽象概念(在这种情况下,使用<代码>而(真)或<>代码>((;))< /代码>不相关):
这也可以通过某种方式适应C#: (goto
在这种情况下不是邪恶的)我更喜欢
do {
// ....
} while(true);
它将无限循环概念的实现选择从循环开始的显著位置降级
如果这是C++或C,只需创建自己的宏来更好地抽象概念(在这种情况下,使用<代码>而(真)或<>代码>((;))< /代码>不相关):
这也可以通过某种方式适应C#:(
goto
在这种情况下不是邪恶的)我也这么认为,但是这里的一些人认为(;;)的更清晰。我想知道为什么…不知道。也许他们喜欢它更短。应该把(;;)
的理解为永远,但我发现你必须不断向人们解释这一点,而while(true)
是直观理解的。[重复rmx回答时的评论]在引入真/假之前,是“while(1)”这是不太明显的,视觉上与“while(i)”没有什么不同。OTOH,“for(;;)”在视觉上很突出。(在引入“true”关键字并使用语法着色后,此参数已失去其有效性)#define ever
我也这么认为,但是这里的一些人认为(;;)
更清晰。我想知道为什么…不知道。也许他们喜欢这样,这很好