gpt4 book ai didi

for-loop - 我应该期望看到 `for` 循环中的计数器在其体内发生变化吗?

转载 作者:行者123 更新时间:2023-12-03 14:26:45 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

4年前关闭。




Improve this question




我正在阅读其他人的代码,他们分别在循环内增加他们的 for 循环计数器,并包括通常的事后想法。例如:

for( int y = 4; y < 12; y++ ) {
// blah
if( var < othervar ) {
y++;
}
// blah
}

基于其他人编写和阅读的大部分代码,我应该期待看到这个吗?

最佳答案

中操作循环计数器的做法为 循环并不完全普遍。许多阅读该代码的人都会感到惊讶。让你的读者感到惊讶很少是一个好主意。

对循环计数器的额外操作添加了 代码的复杂性,因为您必须记住它的含义以及它如何影响循环的整体行为。正如Arkady 提到的,它使您的代码更难维护。

简单来说,避免这种模式 .当您遵循“干净的代码”原则时,尤其是 single layer of abstraction (SLA)原则上,没有这样的事情

for(something)
if (somethingElse)
y++

遵循原则需要你动那个 if阻塞到它自己的方法中,使得在该方法中操作一些外部计数器变得很尴尬。

但除此之外,可能会出现像你的例子那样的“东西”;但对于这些情况 - 那么为什么不使用 while 循环呢?

换句话说:使您的示例变得复杂和令人困惑的是两个 的事实。不同 部分代码更改您的循环计数器。所以另一种方法可能看起来像:
 while (y < whatever) {
...
y = determineY(y, who, knows);
}

然后,该新方法可能是确定如何更新循环变量的中心位置。

关于for-loop - 我应该期望看到 `for` 循环中的计数器在其体内发生变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41381183/

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