我应该避免使用 Java 标签语句吗?

2022-08-31 14:18:12

今天,我有一位同事建议我重构我的代码,以使用标签语句来控制通过我创建的2个嵌套for循环的流。我以前从未使用过它们,因为我个人认为它们会降低程序的可读性。但是,如果论点足够可靠,我愿意改变使用它们的想法。人们对标签声明有什么看法?


答案 1

如果可以跨两个循环(或包含 switch 语句的循环)跳转,则许多算法的表达会更容易。不要为此感到难过。另一方面,它可能表明解决方案过于复杂。所以退后一步,看看问题。

有些人更喜欢“单一进入,单出口”的方法而不是所有循环。也就是说,完全避免中断(并继续)和循环的早期返回。这可能会导致一些重复的代码。

我强烈避免做的是引入辅助变量。在状态中隐藏控制流会增加混乱。

将标记的循环拆分为两种方法可能很困难。例外可能太重了。尝试单一入口,单一退出方法。


答案 2

标签就像goto一样:谨慎使用它们,只有当它们使您的代码更快更重要的是更易于理解时,

例如,如果你在六个层次深的大循环中,并且你遇到一个条件,使循环的其余部分变得毫无意义,那么你的条件语句中有6个额外的陷阱门来提前退出循环是没有意义的。

标签(和goto的)不是邪恶的,只是有时人们以不好的方式使用它们。大多数时候,我们实际上是在尝试编写我们的代码,以便您和下一个程序员可以理解。使其超快是次要问题(警惕过早优化)。

当标签(和goto)被滥用时,它们会使代码的可读性降低,这会给您和下一个开发人员带来悲伤。编译器不在乎。


推荐