If statement 基于条件检查的For循环

If statement 基于条件检查的For循环,if-statement,for-loop,conditional,If Statement,For Loop,Conditional,我正在寻找编写以下代码的最佳方法 if (condition == true) for (i = 0; i < 200; i++) { /// 600 lines of code } else for (i = 200; i > 0; i--) { /// same 600 lines of code as in above condition check } if(条件==true) 对于(i=0;i0;i--) { ///与上述条件检查中相同的600行代码 } 到目前为止,

我正在寻找编写以下代码的最佳方法

if (condition == true)
for (i = 0; i < 200; i++)
{
/// 600 lines of code
}

else
for (i = 200; i > 0; i--)
{
/// same 600 lines of code as in above condition check
}
if(条件==true)
对于(i=0;i<200;i++)
{
///600行代码
}
其他的
对于(i=200;i>0;i--)
{
///与上述条件检查中相同的600行代码
}

到目前为止,我在两个循环中复制了相同的代码。但是,有没有办法进行检查,然后让代码只显示一次?唯一取决于条件检查的是循环的工作方式。我必须根据条件检查在循环中前进或后退,并且不希望将相同的600行代码粘贴两次。我是用C写这篇文章的。

没有两个循环,循环变量略有不同,您可以根据条件改变循环变量,使其有效计数从0到200或从200到0

for (iteration = 0; iteration < max; iteration++)
{
    index = (condition == true)  ?  iteration  :  max-iteration;
    //  600 lines of code, using index
}
for(迭代=0;迭代
您可能想添加一条评论,以便其他人(以及您,稍后)知道这应该做什么

然而,即使这样,您也应该尝试将这600行代码重构为一个单独的方法——或者说是几个单独的方法,每个方法处理这600行代码的一个方面。作为经验法则:i)每当你有重复的代码时,不管它是600行还是10行,试着把它变成一个方法;ii)每当你有一个很长的代码块时,即使它没有重复很多次,试着把它分成几个方法。这将使代码更具自描述性,更易于维护


这可能并不总是容易的,例如,如果这600行访问并修改了许多在循环之外声明的变量,但这本身可能是设计中的另一个缺陷…

您想要的是一个称为“子例程”或“函数”的程序。任何时候复制代码,您都会养成一个坏习惯。如果在多个地方需要一些东西,它应该成为一个单独的功能。这称为“封装”。事实上,您正在复制600行代码,这让我觉得有几个机会可以更好地封装您丢失的代码。一个子程序,从两个地方调用。@Quentin“Argh”如“Argh,为什么我没有想到这个”,或“Argh,我的眼睛!”?后者。然而,仔细想想,编译器可能会优化你的索引旋转,但仍然如此。感谢tobias_k…在循环外有太多变量的情况下,你的答案将最有效,创建一个新函数将需要大量工作。在不太依赖外部变量的情况下,按照小册子的建议创建一个子例程是一种很好的方法。