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(真的),因为我认为它更直观、优雅,并且在哲学上更有趣


然而,这最终只是一个风格问题。

按重要性顺序:

  • 不管您当前的代码样式指南怎么说
  • 当前代码中正在使用的内容
  • 不管你的经理喜欢什么
  • 不管你的同事喜欢什么
  • 你喜欢什么都行
  • 3和4的顺序在某些情况下可以颠倒;)


    编辑:我个人更喜欢“while(true)”(包括空格),但我很少提到列表中的第5点。

    按重要性排序:

    for(;;)
    
  • 不管您当前的代码样式指南怎么说
  • 当前代码中正在使用的内容
  • 不管你的经理喜欢什么
  • 不管你的同事喜欢什么
  • 你喜欢什么都行
  • 3和4的顺序在某些情况下可以颠倒;)

    编辑:我个人更喜欢“while(true)”(包括空格),但我很少提到列表中的第5点

    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
    我也这么认为,但是这里的一些人认为(;;)
    更清晰。我想知道为什么…不知道。也许他们喜欢这样,这很好