IntelliJ IDEA 在 JAVA 中使用 += 时为变量加下划线

IntelliJ IDEA underlines variables when using += in JAVA

自新更新 (2018.2) IntelliJ IDEA 下划线变量,当它们 "unnecessarily" 重新分配时 - 但是,这包括每次使用“+=”。
这是 IDE 中的错误还是我弄错了?
请以这个基本方法为例。 (它只是添加了一个数字列表。)

这是 IntelliJ IDEA 2018.2 的new feature

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

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

为什么它可能有用?

如果variable/parameter有下划线,就知道不能直接在lambda/anonymousclass中使用

当阅读一个很长的方法代码时,如果参数没有下划线,您肯定知道它的值没有在这个方法的任何地方被重新分配,并且它包含的值与任何时候传递给这个方法的值完全相同.

一些代码指南反对重新分配变量,您可能希望尽可能避免使用它们以保持代码整洁并使其更容易 read/debug。

如今,许多开发人员更愿意避免可变状态,并且仅在真正有必要的极少数情况下才重新分配变量。我们不想手动强制执行不可变性,我们假设默认情况下一切都是不可变的,并且希望在某些情况下不可变的情况下引起额外的注意。如果您使用 final 标记非可变变量,则意味着您需要为常规情况编写更多代码,而在特殊情况下编写更少代码。 (顺便说一句,在现代语言中声明不可变变量不需要编写额外的代码,但不幸的是在 Java 中不需要)。

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

希望这张截图能有所帮助。

如果您知道什么是 side effect in programming 那么这对您来说就很容易了。为了保护您的变量免受 副作用 ,IDE 显示下划线作为对您的警告。