web-dev-qa-db-fra.com

IntelliJ IDEA souligne les variables lors de l'utilisation de + = in JAVA

Depuis la nouvelle mise à jour (2018.2), IntelliJ IDEA souligne les variables, lorsqu'elles sont "inutilement" réaffectées - cela inclut cependant chaque utilisation de "+ =".
Est-ce une erreur dans le IDE ou est-ce que je me trompe?
Veuillez voir cette méthode de base comme exemple. (Il ajoute simplement une liste de nombres.)

example image

23
fandango

C'est une nouvelle fonctionnalité d'IntelliJ IDEA 2018.2:

Souligner les variables locales réaffectées et les paramètres réaffectés

IntelliJ IDEA souligne désormais les variables locales réaffectées et les paramètres réaffectés, par défaut. Les attributs de toutes les langues prenant en charge cette fonctionnalité, qui incluent pour l'instant Java et Groovy, peut être modifié dans Préférences/Paramètres | Éditeur | Modèle de couleurs | Paramètres par défaut de la langue | Identificateurs | Réaffecté .

underline

Pourquoi cela peut-il être utile?

Si la variable/paramètre est souligné, vous savez que vous ne pouvez pas l'utiliser directement dans la classe lambda/anonyme.

Lors de la lecture d'un code de méthode très long, si le paramètre n'est pas souligné, vous savez avec certitude que sa valeur n'est réaffectée nulle part dans cette méthode et qu'il contient exactement la même valeur qui a été transmise à cette méthode à tout moment.

Certaines directives de code sont contre les variables réaffectées et vous voudrez peut-être les éviter dans la mesure du possible pour garder le code propre et le rendre plus facile à lire/déboguer.

De nos jours, de nombreux développeurs préfèrent éviter les états mutables et réaffecter les variables uniquement dans de rares cas lorsque cela est vraiment nécessaire. Nous ne voulons pas imposer manuellement l'immuabilité, nous supposons que tout est immuable par défaut et voulons apporter une attention supplémentaire aux cas où quelque chose ne l'est pas. Si vous utilisez final pour marquer des variables non mutables, cela signifie que vous devez écrire plus de code pour les cas réguliers et moins de code dans les cas exceptionnels. (BTW dans les langages modernes déclarant des variables immuables ne nécessite pas d'écrire du code supplémentaire, mais malheureusement pas en Java).

Brian Goetz, Java Architecte de langage, aime aussi la façon dont IntelliJ IDEA met en évidence les variables réaffectées (voir son Tweet ).

28
CrazyCoder