【问题标题】:IntelliJ IDEA underlines variables when using += in JAVAIntelliJ IDEA 在 JAVA 中使用 += 时下划线变量
【发布时间】:2019-01-12 19:06:05
【问题描述】:

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

【问题讨论】:

  • 我不确定,但是如果您使用 jdk 10,这些下属可能会建议您使用 var 而不是 int
  • 感谢您的回复。我实际上降级到 jdk 8/1.8,因为没有人可以打开我的 jar :)
  • 嗯,从某种意义上说,您可以只使用流来计算它,这是不必要的重新分配……但我看不出您在那里做任何不寻常的事情。

标签: java variables intellij-idea underline


【解决方案1】:

这是 IntelliJ IDEA 2018.2 的 new feature

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

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

为什么它可能有用?

如果变量/参数有下划线,就知道不能直接在lambda/匿名类中使用。

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

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

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

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

【讨论】:

  • 这基本上就是final 的用途(只是不是每个人都使用它)
  • 一段时间以来我见过的最糟糕的 intellij 增强功能之一。有人向他们提出了可用性问题。随意点赞:youtrack.jetbrains.com/issue/IDEA-207835
【解决方案2】:

希望此屏幕截图对您有所帮助。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-05-04
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-19
      • 1970-01-01
      • 2023-03-19
      • 2018-10-11
      相关资源
      最近更新 更多