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

时间:2010-08-18 18:53:52

标签: coding-style

假设您有一段代码,其中有一个for循环,然后是另一个for循环等等......现在,哪一个更好

  1. 为每个计数器变量赋予相同的名称:

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

    for (int i = 0; i < someBound; i++) {
        doSomething();
    }
    
    for (int j = 0; j < anotherBound; j++) {
        doSomethingElse();
    }
    
  3. 我认为第二个会更具可读性,另一方面我会使用j,k等来命名内部循环...你觉得怎么样?

8 个答案:

答案 0 :(得分:4)

在这种情况下我重用了变量名。原因是i对于“名称不是很重要的循环控制变量”来说是一种国际程序。 j在这个分数上有点不太明确,一旦你不得不开始使用k以外,它会变得模糊不清。

我应该补充的一点是,当您使用嵌套循环时,您必须转到jk及更高版本。当然,如果你有三个以上的嵌套循环,我强烈建议你进行一些重构。

答案 1 :(得分:1)

第一个对我有好处。 cz允许你在你的内循环中使用j,k,并且因为你在第二个循环中重置i = 0所以不会出现使用旧值的任何问题

答案 2 :(得分:1)

在编写循环的方式中,计数器不应该在循环体外使用。所以使用相同的变量名称没有错。

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

变量应该被命名为与操作或边界条件相关的东西。

例如: 'indexOfPeople', 'activeConnections',或 'fileCount'。

如果你打算使用'i','j'和'k',那么为嵌套循环保留'j'和'k'。

答案 5 :(得分:0)

void doSomethingInALoop() {
  for (int i = 0; i < someBound; i++) {
    doSomething();
  }
}

void doSomethingElseInALoop() {
  for (int i = 0; i < anotherBound; i++) {
    doSomethingElse();
  }
}

答案 6 :(得分:0)

如果循环执行相同的操作(循环控制 - 而不是循环体,即它们在同一个数组或相同范围上循环),那么我将使用相同的变量。

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

答案 7 :(得分:0)

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

这个问题确实无关紧要,因为变量是for循环的局部定义。某些类型的C(例如OpenVMS)需要使用不同的名称。否则,它等于程序员的偏好,除非编译器限制它。