退出声明的“良好编程”替换

时间:2017-04-26 14:47:36

标签: loops fortran

我有一个相当简单的结构:

do i = 1,x
  if (condition) then
    do_stuff
    exit
  end if
end do

如果do - 循环变得足够大,那么exit语句将不再是好的(我看一下它就像我看go to语句一样)。

我正在寻找一种更清晰的方法来在适当的时候退出循环,以便更清楚看到其他人查看我的代码时发生了什么。

我想到的一件事可能是清理,这将是

lkeepgoing = .true.
iterator   = 1
while (lkeepgoing) then
  if (condition) then
    do_stuff
    lkeepgoing = .false.
  end if
  iterator = iterator+1
end while

虽然我认为它清除了为什么我想退出循环而不必查看整个循环,但我觉得它看起来过于复杂。

所以问题:如何退出do - 以一种清晰,干净的方式满足条件,不使用意大利面条代码的语句?

1 个答案:

答案 0 :(得分:3)

第一个代码段使用exit的方式没有任何问题。像这样的小跳跃很难意大利面条代码。与你的第二个片段相比,当你遇到一定的条件时,你会在一个循环中做出有条理的早期退出,这一点要清楚得多。

请记住,exit非常局限于可以跳转到的位置,而go to可以用来跳到所有地方。

不要严格遵守一般规则,例如永远不要使用goto ,当然,当它们使代码变得更糟时。