IntelliJ IDEA在JAVA中使用+ =时强调变量

问题描述 投票:18回答:1

由于新的更新(2018.2)IntelliJ IDEA强调变量,当它们被“不必要地”重新分配时 - 但是,这包括每次使用“+ =”。 这是IDE中的错误还是我弄错了? 请以此基本方法为例。 (它只是添加一个数字列表。)

example image

java variables intellij-idea underline
1个回答
25
投票

它是IntelliJ IDEA 2018.2的new feature

为重新分配的局部变量和重新分配的参数加下划线

IntelliJ IDEA现在默认为重新分配的局部变量和重新分配的参数加下划线。支持此功能的所有语言的属性(现在包括Java和Groovy)可以在Preferences / Settings中更改编辑|配色方案|语言默认值|标识符|重新分配。

underline

为什么它可能有用?

如果变量/参数带有下划线,则表示您无法直接在lambda / anonymous类中使用它。

当读取非常长的方法代码时,如果参数没有加下划线,您肯定知道它的值不会在此方法中的任何位置重新分配,并且它包含与任何时候传递给此方法的值完全相同的值。

某些代码指南针对重新分配的变量,您可能希望尽可能避免使用它们以保持代码清洁并使其更易于读取/调试。

如今,许多开发人员更愿意避免可变状态,并且仅在极少数情况下才真正需要时重新分配变量。我们不想手动强制执行不变性,我们假设默认情况下所有内容都是不可变的,并且当某些内容不是时,我们希望更多地关注这些情况。如果使用final标记非可变变量,则意味着您需要为常规案例编写更多代码,在特殊情况下编写更少代码。 (BTW在现代语言中声明不可变变量不需要编写额外的代码,但遗憾的是不是在Java中)。

Java语言架构师Brian Goetz也喜欢IntelliJ IDEA突出重新分配变量的方式(参见his tweet)。

© www.soinside.com 2019 - 2024. All rights reserved.