IntelliJ IDEA subraya las variables cuando se usa += en JAVA

3 minutos de lectura

avatar de usuario de fandango
fandango

Desde la nueva actualización (2018.2), IntelliJ IDEA subraya las variables, cuando se reasignan “innecesariamente”, sin embargo, esto incluye cada uso de “+=”.
¿Es esto un error en el IDE o me estoy equivocando?
Por favor vea este método básico como un ejemplo. (Simplemente agrega una lista de números).

imagen de ejemplo

  • No estoy seguro, pero si usa jdk 10, estos subordinados pueden sugerirle que puede usar var en lugar de int.

    – zlakad

    5 de agosto de 2018 a las 18:32

  • Gracias por la respuesta. De hecho, bajé a jdk 8/1.8, porque nadie podía abrir mi jar 🙂

    – fandango

    5 de agosto de 2018 a las 18:34

  • Bueno, es una reasignación innecesaria en el sentido de que podría usar un flujo para calcularlo… Pero no veo que esté haciendo nada inusual allí.

    –Andy Turner

    5 de agosto de 2018 a las 18:46


Avatar de usuario de CrazyCoder
CrazyCoder

Es un nueva caracteristica de IntelliJ IDEA 2018.2:

Subrayado de variables locales reasignadas y parámetros reasignados

IntelliJ IDEA ahora subraya las variables locales reasignadas y los parámetros reasignados, de forma predeterminada. Los atributos de todos los lenguajes que admiten esta función, que por ahora incluyen Java y Groovy, se pueden cambiar en Preferencias/Configuración | Redactor | Esquema de color | Valores predeterminados de idioma | Identificadores | reasignado.

subrayar

¿Por qué puede ser útil?

Si la variable/parámetro está subrayada, sabe que no puede usarla directamente en la clase lambda/anónima.

Al leer un código de método muy largo, si el parámetro no está subrayado, sabe con certeza que su valor no se reasigna en ninguna parte de este método y que contiene exactamente el mismo valor que se pasó a este método en cualquier momento.

Algunas pautas de código están en contra de las variables reasignadas y es posible que desee evitarlas cuando sea posible para mantener el código limpio y facilitar la lectura/depuración.

Hoy en día, muchos desarrolladores prefieren evitar el estado mutable y reasignar variables solo en casos excepcionales cuando es realmente necesario. No queremos imponer manualmente la inmutabilidad, suponemos que todo es inmutable de forma predeterminada y queremos llamar la atención adicional sobre los casos en que algo no lo es. Si utiliza final para marcar variables no mutables significa que necesita escribir más código para casos regulares y menos código en casos excepcionales. (Por cierto, en los lenguajes modernos, declarar variables inmutables no requiere escribir código adicional, pero desafortunadamente no en Java).

A Brian Goetz, Java Language Architect, también le gusta la forma en que IntelliJ IDEA resalta las variables reasignadas (ver su tuit).

  • es básicamente lo que final se puede usar para (solo que no todos lo usan)

    – ACV

    29 de enero de 2019 a las 15:32


  • una de las peores mejoras de intellij que he visto en mucho tiempo. Alguien les ha planteado un problema de usabilidad. Siéntete libre de votarlo: youtrack.jetbrains.com/issue/IDEA-207835

    – ACV

    5 de agosto de 2019 a las 10:18


Espero que esta captura de pantalla ayude.

ingrese la descripción de la imagen aquí

si sabes cual es el efecto secundario en la programación entonces te será fácil. Para proteger su variable de la efecto secundarioel IDE muestra el subrayado como una advertencia para usted.

¿Ha sido útil esta solución?