For 循环条件约定

For-loop condition conventions

我最近讨论了 Java 中 for 循环中非计数器相关条件的使用:

for(int i = 0; o.getC() < 10; i++)
    o.addC(i);

有谁知道是否有任何 "official" 像这样的 for-conditions 约定?在我看来,与等效的 while 循环相比,它更容易阅读,因为所有循环参数都在第一行:

int i = 0;
while(o.getC() < 10) {
    i++;
    o.addC(i);
}

甚至更糟:

int i = 0;
while(o.getC() < 10)
    o.addC(++i);

for 循环的一个好处是有一个快捷方法。因此,如果您想执行数组中的所有项目,您只需执行以下操作:

(双数:arrayName) 其中 double 是类型,number 是你给每个元素的名称(你怎么称呼它并不重要,在这种情况下你将在那里引用每个值作为 "number" )。 arrayName 是你所引用的数组的名称。

如果你想达到每个 element/object 这是最快的方法。

怎么样:

for(int i = 0; i < MAX_ITERATIONS; i++)
{
    o.addC(i);
    if (o.getC() >= 10)
        return o; // or break
}

如果 addC 没有真正按照您的预期进行,这可以防止无限循环。

for 循环在几乎所有情况下都使用等效的 while 解决方案。数组、列表、标准数据结构。

另一方面,while 通常用于流和无限长的迭代..

大多数开发人员都希望 for 语句包含三件事:

  • 变量初始化
  • 基于变量的终止条件
  • 增加变量

如果您更改代码以包含意想不到的内容,它将变得更难阅读,因此更难维护。

此外,我认为 while 循环使您的意图更清晰:o.getC() 小于 10 时做某事。这个"something"恰好是:加一个递增的数字.

长话短说:对 "non-counter related conditions" 使用 while 循环。