开发人员是否应该避免在C#中使用continue或在其他语言中使用其等效来强制循环的下一次迭代?支持或反对的论据是否与关于Goto的论点重叠?
我认为应该继续使用更多!
我经常遇到如下代码:
for (...) { if (!cond1) { if (!cond2) { ... highly indented lines ... } } }
代替
for (...) { if (cond1 || cond2) { continue; } ... }
用它来使代码更具可读性!
是continue
任何比,更有害说,break
?
如果有的话,在我遇到/使用它的大多数情况下,我发现它使代码更清晰,更少意大利面条.
无论是否继续,您都可以编写好的代码,无论是否继续,您都可以编写错误的代码.
关于goto的参数可能有一些重叠,但就我而言,使用continue相当于使用break语句(在循环中)或从方法体中的任何地方返回语句 - 如果使用正确,它可以简化代码(不太可能包含错误,更容易维护).
没有有害的关键字.只有它们的有害用途.
Goto本身并无害处,也不会继续.他们需要谨慎使用,就是这样.
如果继续导致可读性问题,那么您可能还有其他问题.例如,for循环中的大量代码.如果你必须编写大的for循环,我会尝试坚持使用继续接近for循环的顶部.否则,很容易错过深埋在for循环中间的继续.
我喜欢在循环开始时使用Continue来处理简单的if条件。
对我来说,由于没有多余的嵌套,它使代码更具可读性,并且您可以看到我已明确处理了这些情况。
这与我使用goto的原因相同吗?也许。我有时会使用它们来提高可读性并停止代码的嵌套,但是通常我会更多地使用它们来进行清理/错误处理。