gpt4 book ai didi

java - 为什么在Java中改变for循环计数器是不好的?

转载 作者:行者123 更新时间:2023-12-01 20:54:50 25 4
gpt4 key购买 nike

我经常听说修改 for 循环体中的循环计数器是不好的。下面的(糟糕的)例子展示了我正在谈论的内容。

for (int i=0; i<10; i++) {
i++;
}

我知道在 while 循环中这是允许的,但是有人可以解释为什么这在 Java 中是一个不好的做法吗?即使是任何编程语言中的问题。

最佳答案

这不好的两个原因:

  1. 可读性。 for( a; b; c ) { d; }a; while( b ) { d; c; } 的简写明确用于迭代列表的情况。语言中并不严格需要它。拥有它的全部意义在于暗示意图:“我想迭代整个列表”或“我想按顺序迭代列表的一部分,然后在找到某些东西时中止”。

    如果您添加额外的增量,其他人遇到您的代码时将会感到惊讶。如果您c上面说++x或者无论如何,人们会简单地假设它遍历所有项目,然后发现“惊喜!并不总是!”。

    OTOH,如果您使用 while 循环,人们只会看到条件,并会被警告这将是一个更复杂的循环,其中增量不会恒定。

  2. 优化。鉴于上述意图陈述,某些优化器将为 for 生成不同的代码。声明比while陈述。尽管它们都不应该生成错误的代码,但它们可能会应用一种优化,这种优化对于非顺序访问的性能特征比顺序访问的性能更差。

    我所说的“更差的性能特征”是指它们可能会告诉 CPU 缓存错误的代码路径,并将执行速度减慢一小部分周期,因为数据在不必要地刷新后可能必须再次加载到 CPU 中.

关于java - 为什么在Java中改变for循环计数器是不好的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com