Coding style 命名连续for循环的计数器变量

Coding style 命名连续for循环的计数器变量,coding-style,Coding Style,假设您有一段代码,其中有一个for循环,后跟另一个for循环,依此类推。。。现在,哪一个更好 为每个计数器变量指定相同的名称: for (int i = 0; i < someBound; i++) { doSomething(); } for (int i = 0; i < anotherBound; i++) { doSomethingElse(); } for(int i=0;i

假设您有一段代码,其中有一个for循环,后跟另一个for循环,依此类推。。。现在,哪一个更好

  • 为每个计数器变量指定相同的名称:

    for (int i = 0; i < someBound; i++) {
        doSomething();
    }
    
    for (int i = 0; i < anotherBound; i++) {
        doSomethingElse();
    }
    
    for(int i=0;i
  • 给他们起不同的名字:

    for (int i = 0; i < someBound; i++) {
        doSomething();
    }
    
    for (int j = 0; j < anotherBound; j++) {
        doSomethingElse();
    }
    
    for(int i=0;i

  • 我认为第二个会更具可读性,另一方面,我会使用j、k等来命名内部循环。。。你觉得怎么样?

    第一个对我有好处,。cz,这将允许您在内部循环中使用j,k,并且因为您在第二个循环中重置i=0,所以使用旧值不会有任何问题{
    void doSomethingInALoop() {
      for (int i = 0; i < someBound; i++) {
        doSomething();
      }
    }
    
    void doSomethingElseInALoop() {
      for (int i = 0; i < anotherBound; i++) {
        doSomethingElse();
      }
    }
    
    for(int i=0;i
    在编写循环时,计数器不应在循环体外部使用。所以使用相同的变量名没有什么错


    至于可读性,i、j、k通常用作计数器的变量名。因此,最好使用它们,而不是反复选择下一个字母。

    如果循环做相同的事情(循环控制——而不是循环体,即它们在相同的数组或相同的范围内循环),那么我会使用相同的变量


    如果它们在做不同的事情——不同的数组,或者其他什么,那么我会使用不同的变量。

    那么,在第一百个循环中,您会将变量命名为“zzz”


    这个问题实际上并不重要,因为变量是在for循环的局部定义的。有些风格的C语言,比如OpenVMS,需要使用不同的名称。否则,它就相当于程序员的偏好,除非编译器限制它。

    我觉得有趣的是,这么多人对此有不同的看法。就我个人而言,如果没有其他原因,我更喜欢第一种方法,那就是保持j和k的开放性。我可以理解为什么人们会更喜欢第二个,因为它的可读性,但我认为任何值得将项目交给它的程序员都能够看到您在第一种情况下做了什么。

    在这种情况下,我重用了变量名。原因是,
    i
    是一种国际编程语言,用于“名称并不重要的循环控制变量”
    j
    在这一点上就不那么清晰了,一旦你不得不开始使用
    k
    之后,它就会变得有点模糊


    我要补充的一点是,当您使用嵌套循环时,您必须转到
    j
    k
    ,甚至更高。当然,如果有三个以上的嵌套循环,我强烈建议进行重构。

    变量应命名为与操作或边界条件相关的名称

    例如: “indexOfPeople”, “活动连接”,或 “文件计数”


    如果你要使用“i”、“j”和“k”,那么为嵌套循环保留“j”和“k”。

    这不是完全不可知的语言,因为C++中的一个问题是,在<循环>的范围内声明的< <代码> >三重表中的变量是否应该被认为超出循环结束后的范围。为什么不使用Loop1、Loop2、Loop3或更清晰一点的东西呢?(我对I,j,k没问题,但后来我开始编程时,一个变量最多有2个字符,整数变量以“I”开头。)@Philip我只是习惯了,当然你可以选择任何你想要的:-)@Steven Sry,你说得对。。。改变了…@Steven Sudit第二条评论-i,j,k。。。也是数学和非编程科学中最常用的索引,因此这可能也有助于选择。我100%同意,但如果一个范围内有24个以上的索引,则确实需要重构代码。嗯,是的,但重点是,谁在乎每个循环使用相同的循环,还是每个循环使用不同的循环?如果它的程序编译并符合您正在编程的商店的编程标准,那么这个问题就完全无关紧要了。不过,这与决定编程标准应该是什么有关。我不同意,因为
    j
    只使用嵌套在外部
    I
    循环中的循环,依此类推。如果我看到一个
    j
    ,我希望嵌套。+1-变量应该按照它们的意思命名。我不会使用I,j,k,除非我在做矩阵乘法或类似的事情。@Jeff:有时候你不想强调作用于循环的无关索引变量。把它称为索引也行,但可能会给它在舞台上的时间比它应得的多。@Steven Sudit-也许是这样。为此,我经常使用
    索引
    。我的习惯可以追溯到VB3时代,当时我不得不维护其他人的软件,这些软件有很多单字母变量。只要试着在使用20世纪90年代早期IDE的两万行程序中找到变量
    i
    的所有用法即可
    Dim x as integer
    给出两个误报,这只是一行。如果一个变量只有一个字母,那么就无法确定它当时是如何使用的。@杰夫:如果您使用支持regexp的搜索,或者显式使用该选项,那么只有当它本身是一个单词时,才可以让它查找
    i
    。话虽如此,我并不反对使用更长的名称,如果它有利于代码的话。我担心的是,不管它的名称如何,它都是一个索引,这一事实是显而易见的,因此充实它并不会增加太多的价值。如果给索引赋予描述性名称的好处太少,这可能是一个迹象,表明你应该使用集合和foreach语句。j也非常清楚,imho,但它是mor