【发布时间】:2017-02-28 21:39:33
【问题描述】:
我经常听说在 for 循环体中修改循环计数器是不好的。下面的(坏的)例子说明了我在说什么。
for (int i=0; i<10; i++) {
i++;
}
我知道这在 while 循环中是允许的,但任何人都可以解释为什么这在 Java 中是一种不好的做法。甚至是任何编程语言的问题。
【问题讨论】:
-
这很糟糕,因为您无法仅通过查看条件来确定您将通过多少次循环,从而使维护变得更加困难。归结为可读性。但是没有什么明确不允许的。
-
感谢您的快速回复。是否会出现有关软件或 Java VM 功能的任何问题?我听说过其他编程语言的问题。你有这方面的例子吗?
-
在 Java 或其他 C 派生语言 AFAIK 中没有。如果条件正确,则不会。但是,您可能会遇到相等问题(例如:
for (int i=0; i==10; i++) { i+=10; }),或者如果您在循环中增加但在正文中减少(例如:for (int i=0; i<10; i++) { i--; })。如果您正在遍历一个数组,并在读取之前更改索引,这可能会导致抛出异常。 -
Thomas 我建议你在他的 cmets 中听听@AntonH 的建议,他们都很好!
标签: java loops for-loop while-loop programming-languages