fandango
fandango

Reputation: 713

IntelliJ IDEA underlines variables when using += in Java

Since the new update (2018.2) IntelliJ IDEA underlines variables, when they are "unnecessarily" reassigned - this includes, however, each use of "+=".

Is this a mistake in the IDE or am I getting it wrong?

Please see this basic method as an example. (It just adds a list of numbers.)

example image

Upvotes: 71

Views: 35304

Answers (3)

CrazyCoder
CrazyCoder

Reputation: 402453

It's a new feature of IntelliJ IDEA 2018.2:

Underlining reassigned local variables and reassigned parameters

IntelliJ IDEA now underlines reassigned local variables and reassigned parameters, by default. The attributes for all the languages supporting this feature, which for now include Java and Groovy, can be changed in Preferences/Settings | Editor | Color Scheme | Language Defaults | Identifiers | Reassigned.

underline

Why it may be useful?

If the variable/parameter is underlined, you know that you can't use it in lambda/anonymous class directly.

When reading a very long method code, if the parameter is not underlined, you know for sure that its value is not reassigned anywhere in this method and it contains exactly the same value that was passed to this method at any point.

Some code guidelines are against reassigned variables and you may want to avoid them where possible to keep the code clean and make it easier to read/debug.

Nowadays many developers prefer to avoid mutable state, and reassign variables only in rare cases when it is really necessary. We don't want to manually enforce immutability, we suppose that everything is immutable by default and want to bring additional attention to the cases when something is not. If you use final to mark non-mutable variables it means that you need to write more code for regular cases and less code in exceptional cases. (BTW in modern languages declaring immutable variables doesn't require writing additional code, but unfortunately not in Java).

Brian Goetz, Java Language Architect, also likes the way IntelliJ IDEA highlights reassigned variables (see his tweet).

Upvotes: 86

Gk Mohammad Emon
Gk Mohammad Emon

Reputation: 6956

If you know what is the side effect in programming then it will be easy for you. To protect your variable from the side effect, the IDE shows the underline as a warning to you.

Upvotes: 2

Enrico Giurin
Enrico Giurin

Reputation: 2273

Hope this screenshot would help.

enter image description here

Upvotes: 9

Related Questions