[英]Nested for-each and if-else statement without goto statement
我有一个嵌套的for-each和if-else情况,如下所示。 在这些情况下,如果基于if-else语句的if-else我必须转到循环的开始或循环中的其他位置。 GOTO是使用这种方案的唯一方法吗? 还是可以更好的设计? 为了简洁起见,我只包含两个for-for,但就我而言,我包含4个for-for和大约13个if-else语句。
如果您使用的方法很长,那是难闻的气味。 将其分为较小的方法或较小的类。 这也将使其更容易跳到另一个位置。
也许状态机原理将帮助您设置下一个状态。
Goto不是唯一的方法,但它可能是执行这种“多级continue
”的最干净的方法。 另一种方法是设置标志,然后检查每个循环的顶部以查看是否设置了适当的标志,但是,如果这样做,则会操纵状态, if
条件更多, if
使代码复杂化,并增加发生错误的可能性。
如果可以,请考虑重构。 可以使用return
语句将内部循环重构为其自己的方法。
也可以看看
goto(C#参考)
goto的常见用法是将控制权转移到特定的切换用例标签或switch语句中的默认标签。 goto语句对于摆脱深层嵌套的循环也很有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.