2013-02-10 95 views
0

我使用PMD工具来查找Java代码中的错误(如果有的话)。 PMD给出的一个共同的建议是“局部变量{local_variable}可以被声明为最终的”。如果状态没有进一步改变,是否有必要将所有局部变量声明为final?需要了解一个PMD规则

+0

http://stackoverflow.com/questions/1615419/what-is-the-reason-for-these-pmd-rules – 2013-02-10 09:57:10

+0

另请参见[this discussion](http://stackoverflow.com/questions/316352) /为什么 - 会 - 一个标记,局部变量,和方法参数,为决赛,在-JAVA) – assylias 2013-02-10 10:07:32

回答

2

是否有必要将所有局部变量声明为final,如果它的状态没有进一步改变?

不,这是没有必要的,除非在一种情况下:如果您需要访问匿名类中的变量。

当所有局部变量最终没有变化时,是不是最好的做法?

这显然是主观的 - 我个人认为,它杂波的代码不必要的,如果你遵循良好的编码习惯,你的方法应该是足够短,不言自明的,以至于让你的变量最终不应要求。

1

那么这也是一个语言设计的问题,将变量明确设置为final,并且让final关键字全部出现。在scala中默认的是让所有东西都是最终的和不可变的,从而推动更多功能的设计。如果你想知道为什么使用final,请看scala - 这应该给你一些想法。

我会认为它不好使用最后的方式。最终变量 - 从这个意义上说,是不变的或不变的。这是一种编程合同。代码中最终变量的副作用更少。如果你离开了,你也可以省去所有的私人领域。何必?

在eclipse中,当您打开对话框“Source/Clean Up ...”时,您可以自动添加所有必需的最终字段以及许多其他被视为“更清洁”的内容(所以我想它被称为“清理”因为不使用final将被认为是不洁净的)。

这取决于你 - 使用它 - 或离开它。使用它 - 并特别关注最终不能应用的代码。也许这个代码可以改进为最终的?

所以:是的!这是很好的做法!