在Java中,我通常有类似于以下代码的片段:
for (int i = 0; i < someLimit; i++) {
// some relatively simple and short code to iterate
}
事实上,我很少将循环变量命名为“i”以外的任何东西,除了复杂的for循环,我在循环中重复使用循环变量。
我习惯于描述性地命名变量,但我没有看到或被教导过命名for循环变量。
将名为“i”的for-loop变量保留为不良做法?
答案 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, j
和k
的含义。因此,为这些索引提供更有用的名称可能会有所帮助。
在我看来,除了可读性之外没有理由选择这些变量的名称。
答案 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
}
更清洁。