是否可以将for-loop中的变量名称保留为“i”?

时间:2011-03-04 21:49:58

标签: coding-style for-loop

  

可能重复:
  Why are we using i as a counter in loops?

在Java中,我通常有类似于以下代码的片段:

for (int i = 0; i < someLimit; i++) {
// some relatively simple and short code to iterate
}

事实上,我很少将循环变量命名为“i”以外的任何东西,除了复杂的for循环,我在循环中重复使用循环变量。

我习惯于描述性地命名变量,但我没有看到或被教导过命名for循环变量。

将名为“i”的for-loop变量保留为不良做法?

7 个答案:

答案 0 :(得分:0)

是的,这是完全可以接受的,通常是标准做法。

标准做法是嵌套循环的i,j,k。

for(int i = 0; i < 5; i++)
{
    for(int j = 0; j < 5; j++)
    {
        for(int k = 0; k < 5; k++)
        {
            // do stuff
        } 
    }  
}
除了三个嵌套循环之外,除了表示其他一些问题之外,还需要程序员来定义内部循环规则。

答案 1 :(得分:0)

我的意见 - i正好符合这个目的。我只使用单字母变量来表示短索引器和lambdas,我看到大多数其他开发人员都这样做,所以我就和你在一起。

答案 2 :(得分:0)

代码可读性而言,几乎每个人都明白i是索引。给它一些其他名称几乎使得阅读代码变得更加困难。

但我同意你的看法。当你有嵌套循环时,在阅读代码时,很难保持头部i, jk的含义。因此,为这些索引提供更有用的名称可能会有所帮助。

在我看来,除了可读性之外没有理由选择这些变量的名称。

答案 3 :(得分:0)

如果代码真的很简单,那么就可以了。

但是,我从来没有这样做过。我学会了使用没有内置重构功能的工具进行编程,并且无法自动找到所有变量引用。我们必须使用简单的文本搜索来搜索变量。我不得不维护一些代码,他们只使用单字母变量名称。那真是个噩梦,我现在总是使用很长的唯一变量名称!

但是对于现代工具,短代码段上的索引器的单字母变量名称是可以的。

答案 4 :(得分:0)

恕我直言,特别是在嵌套循环中,它非常难看。例如:

for (int i; i < someLimit; i++)
{
     for (int z; z < someLimit; z++)
     {
        ... // array{i, z}
     }
}

答案 5 :(得分:0)

i 通常代表 index 。所以,如果你想要一个更具描述性的命名,请使用完整的单词。 变量名称的完整范围可能并不总是,并且本身提供更易读的代码。考虑hungarian notation真正看到如何让事情更具可读性可能会适得其反。例如,我使用两个字母来表示可变数据的类型(uc,ul,si,s,lp等),后跟变量名的大写第一个字母,如果单词超过5个字符则缩写。

所以你的,在我的写作中,可能是 siInd

答案 6 :(得分:0)

从Java 5开始,您可能会发现很少需要使用循环迭代的索引。 看看:http://download.oracle.com/javase/1.5.0/docs/guide/language/foreach.html

for ( Object o : Collection<Object>)
{
    // do something
}

更清洁。