Steve McConnell的检查表项之一是you should not monkey with the loop index(第16章,第25页,循环索引,PDF格式)。
这很直观,是我一直遵循的一种做法,除了可能是因为我学会了如何编程。
在最近的代码审查中,我发现了这个尴尬的循环,并立即将其标记为可疑。
for ( int i=0 ; i < this.MyControl.TabPages.Count ; i++ )
{
this.MyControl.TabPages.Remove ( this.MyControl.TabPages[i] );
i--;
}
这几乎很有趣,因为它通过将索引保持为零直到删除所有TabPage来起作用。
该循环本来可以写成
while(MyControl.TabPages.Count > 0)
MyControl.TabPages.RemoveAt(0);
而且由于控件实际上是在与循环大约相同的时间编写的,因此它甚至可以写成
MyControl.TabPages.Clear();
从那时起,我就对代码审查问题提出了挑战,发现我对的表述为什么是一种不好的做法,却没有我想要的那么强。我说过,很难理解循环的流程,因此很难维护和调试,并且最终在代码的生命周期内更昂贵。
是否有更好的方式说明为什么这是不好的做法?
最佳答案
我认为你的 Eloquent 很好。也许可以这样写:
关于c# - 为什么 “monkey with the loop index”不好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/457036/