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/

10-12 07:35