2015-11-13 38 views
1

为什么在Java中使用标签是一种不好的做法?我找不到理由。所有的解释 - 你不应该仅仅因为你不应该使用它。Java中的标签 - 不好的做法?

+0

这是我能找到的最好的解释: http://programmers.stackexchange.com/questions/185944/java-labels-to-be-or-not-to-be –

回答

1

很难将包含break的代码读取到标签。此外,标签可能会意外移动,或者代码插入标签的相对位置不正确。由于代码在语法上是有效的,因此编译器无法警告您这些影响。

难以阅读的代码难以维护。错误难免会蠕变。

其他控制结构(breakcontinuewhilefor,等)不从这个苦。

请注意,标签的switch也不会受到这些影响:switch块的结构是明确定义的。

打破嵌套循环的最明智的选择是将代码重新编码为函数并使用return。您还可以获得(可能)将值返回给调用者的额外好处。

1

我认为你指的是中断并继续标记。

的问题是,标休息(继续)是命令式语言的结构,它是绝对没有涉及到面向对象

在面向对象的程序中,可以很容易地理解流程。无法从部分代码跳转到另一部分代码,只能调用方法或继续当前代码或退出当前代码块。

从一个位置跳转到另一个位置是可能的中断点,您的应用程序可以轻松地发生错误。跳跃创建所谓的spaghetti code

+0

这一直是一个悖论我。大家似乎都认为不应该使用标签,但是在很多框架中,以及在JDK代码中,标签的使用相当多。 – dounyy

+0

问题是,如果一种语言提供了做某件事的可能性,那么总有人会使用它。有人会以常识使用它,其他人则不会。 –

+0

但是,当学习最佳实践时,通常的建议是看看一些大的框架代码。一些大框架使用标签的事实是否是一个不好的建议? – dounyy

0

标签很适合摆脱嵌套的for-loops。我建议把嵌套的循环放在一个单独的方法中,然后用return来解决。

问题是复杂的处理流程变得很难遵循。

0

带有标记的中断(和更小的中断)与旧语言(FORTRAN,COBOL,Basic)的旧GOTO语句相当。发现Goto语句比其他类型的语句更加容易产生错误 - 我记得这个研究测量出的可能性是9倍。这引起了70年代的“结构化编程”运动,并禁止了当时一些软件商店的goto声明。

能够轻松读取代码比能够无限制地编写代码更重要。

相关问题