繁体   English   中英

不带goto语句的嵌套for-each和if-else语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM