Java Intellij Idea提议尽可能为所有事情设定最终结果,为什么?

Java Intellij Idea提议尽可能为所有事情设定最终结果,为什么?,java,intellij-idea,final,Java,Intellij Idea,Final,我有点困惑,我的Intellij想法警告我,如果可能的话,所有地方都没有最后的修饰语 实际上final是一个很好的选择,当然在很多情况下都需要final,比如方法参数、常量和 但是 可能有一些非常有力的论据,为什么我的局部方法变量应该是最终的 您能帮助我理解这种大规模的最终使用的好处吗?使所有变量最终化的好处是,可以清楚地看到哪些变量只分配了一次。另一个原因是,可以在匿名类中使用这样的变量,而无需将其设置为final(因为它已经是final了,但Java 8已经没有了这种好处) 以上两个优点都不

我有点困惑,我的Intellij想法警告我,如果可能的话,所有地方都没有最后的修饰语

实际上final是一个很好的选择,当然在很多情况下都需要final,比如方法参数、常量和

但是

可能有一些非常有力的论据,为什么我的局部方法变量应该是最终的


您能帮助我理解这种大规模的最终使用的好处吗?

使所有变量最终化的好处是,可以清楚地看到哪些变量只分配了一次。另一个原因是,可以在匿名类中使用这样的变量,而无需将其设置为final(因为它已经是final了,但Java 8已经没有了这种好处)


以上两个优点都不是很强,所以也许您只想禁用局部变量或参数就可以进行最终检查。默认情况下禁用此检查,因此您可能意外启用了它

我认为还有一件事可能是重复的,在我之前未理解的期末考试中,它有一些“特殊的意义”,甚至可以描述一些API细节等等。。。现在看一下final,我觉得这种感觉有点失去了。IMHO,将参数和局部变量设为final只会在代码中添加大量噪音,使代码更冗长,更难阅读,没有任何真正的优势。使局部变量成为最终变量有助于你对变量进行推理,因为你知道这个值从未赋值;但有一种学派认为,如果你真的需要这样做来进行推理,那么你的方法可能太大了。有些人只是迷信最佳实践。“不可变是好的,所以
final
到处都是更好的。”其思想是代码维护者可以节省时间,而不用担心变量是否被重新分配。IntelliJ显然接受了这个想法。我不知道有任何证据表明,
final
everywhere提供了净收益,但我没有看到任何危害。我个人喜欢把
final
放在局部变量上,否则它们是“有效的final”,但我承认在那里是迷信的。