IntelliJ IDEA подчеркивает переменные при использовании + = в JAVA

Поскольку новое обновление (2018.2) IntelliJ IDEA подчеркивает переменные, когда они "неоправданно" переназначаются - это включает, однако, каждое использование "+ =".
Это ошибка в среде IDE или я ошибаюсь?
См. Этот базовый метод в качестве примера. (Он просто добавляет список чисел.)

example image

Ответ 1

Это новая особенность IntelliJ IDEA 2018.2:

Подчеркивая переназначенные локальные переменные и переназначенные параметры

IntelliJ IDEA теперь по умолчанию подчеркивает переназначенные локальные переменные и переназначенные параметры. Атрибуты для всех языков, поддерживающих эту функцию, которые на данный момент включают Java и Groovy, могут быть изменены в Предпочтения/Настройки | Редактор | Цветовая схема | Язык по умолчанию | Идентификаторы | Переназначен

underline

Почему это может быть полезно?

Если переменная/параметр подчеркнута, вы знаете, что вы не можете использовать ее в лямбда/анонимном классе напрямую.

При чтении очень длинного кода метода, если параметр не подчеркнут, вы точно знаете, что его значение не переназначено нигде в этом методе, и оно содержит точно такое же значение, которое было передано этому методу в любой точке.

Некоторые руководящие принципы кода направлены против переназначенных переменных, и вы можете по возможности избегать их, чтобы поддерживать чистоту кода и облегчить его чтение/отладку.

В настоящее время многие разработчики предпочитают избегать изменяемого состояния и переназначать переменные только в тех редких случаях, когда это действительно необходимо. Мы не хотим вводить неизменяемость вручную, мы предполагаем, что по умолчанию все является неизменяемым, и хотим привлечь дополнительное внимание к случаям, когда что-то не так. Если вы используете final для пометки неизменяемых переменных, это означает, что вам нужно писать больше кода для обычных случаев и меньше кода в исключительных случаях. (Кстати, в современных языках объявление неизменяемых переменных не требует написания дополнительного кода, но, к сожалению, не в Java).

Брайану Гетцу, архитектору языка Java, также нравится, как IntelliJ IDEA выделяет переназначенные переменные (см. Его твит).