代码之家  ›  专栏  ›  技术社区  ›  helpermethod

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

  •  2
  • helpermethod  · 技术社区  · 16 年前

    假设您有一段代码,其中有一个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();
      }
      

    我认为第二个更易于阅读,另一方面,我将使用J、K等来命名内部循环…你怎么认为?

    8 回复  |  直到 16 年前
        1
  •  4
  •   T.E.D.    16 年前

    在本例中,我重用变量名。原因是 i 是“循环控制变量的名称并不重要”的国际程序。 j 在这方面不太清楚,一旦你必须开始使用 k 除此之外,它还有些模糊。

    我要补充一点,当你使用 嵌套的 循环,你必须去 J , K 以及超越。当然,如果您有三个以上的嵌套循环,我强烈建议您进行一些重构。

        2
  •  1
  •   ovais.tariq    16 年前

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

        3
  •  1
  •   Ihor Kaharlichenko    16 年前

    在编写循环的过程中,计数器不应该在循环体之外使用。所以使用相同的变量名没什么错。

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

        4
  •  1
  •   Shaded    16 年前

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

        5
  •  1
  •   Thomas Langston    16 年前

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

    例如: 'indexofpeople', “ActiveConnections”,或 “文件中心”。

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

        6
  •  0
  •   Daniel Moura    16 年前
    void doSomethingInALoop() {
      for (int i = 0; i < someBound; i++) {
        doSomething();
      }
    }
    
    void doSomethingElseInALoop() {
      for (int i = 0; i < anotherBound; i++) {
        doSomethingElse();
      }
    }
    
        7
  •  0
  •   James Curran    16 年前

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

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

        8
  •  0
  •   Russ    16 年前

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

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