应该何时使用final作为方法参数和局部变量? [英] When should one use final for method parameters and local variables?

查看:374
本文介绍了应该何时使用final作为方法参数和局部变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找到了几个参考资料(例如 )建议尽可能使用 final ,我想知道这有多重要。这主要是在方法参数和局部变量的上下文中,而不是最终的方法或类。对于常量,它显而易见。

I've found a couple of references (for example) that suggest using final as much as possible and I'm wondering how important that is. This is mainly in the the context of method parameters and local variables, not final methods or classes. For constants, it makes obvious sense.

一方面,编译器可以进行一些优化,这使得程序员的意图更加清晰。另一方面,它增加了冗长,优化可能是微不足道的。

On one hand, the compiler can make some optimizations and it makes the programmer's intent clearer. On the other hand, it adds verbosity and the optimizations may be trivial.

我应该努力记住这件事吗?

Is it something I should make an effort to remember to do?

推荐答案

obsess:


  • 最终字段 - 将字段标记为最终字段强制它们在构造结束时设置,使该字段引用不可变。这样可以安全地发布字段,并且可以避免在以后的读取时进行同步。 (请注意,对于对象引用,只有字段引用是不可变的 - 对象引用引用的内容仍然可以更改并影响不变性。)

  • 最终静态字段 - 尽管我使用枚举现在我曾经使用静态最终字段的许多情况。

考虑但明智地使用:


  • 最终类 - 框架/ API设计是我认为的唯一情况。

  • 最终方法 - 与最终类基本相同。如果你正在使用模板方法模式,如疯狂和标记最终的东西,你可能过分依赖继承,而不是委托。

除非感觉肛门,否则忽略:

Ignore unless feeling anal:


  • 方法参数和局部变量 - 我很可能这样做很大程度上是因为我很懒,我发现它使代码混乱。我将完全承认,我不打算修改的标记参数和局部变量是更严格。我希望这是默认的。但事实并非如此,我发现整个决赛更难以理解代码。如果我在别人的代码中,我不会把它们拉出去,但是如果我正在编写新的代码,我就不会把它们放进去。一个例外是你需要标记最终的东西以便你可以访问它来自一个匿名的内部类。

这篇关于应该何时使用final作为方法参数和局部变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆