我使用 PMD 工具来查找 java 代码中的错误(如果有)。PMD 给出的一个常见建议是“局部变量 {local_variable} 可以声明为最终变量”。如果它的状态没有进一步改变,是否有必要将所有局部变量声明为最终变量?
2 回答
如果它的状态没有进一步改变,是否有必要将所有局部变量声明为最终变量?
不,没有必要,除非在一种情况下:如果您需要在匿名类中访问该变量。
当所有局部变量不改变时,将它们设为最终变量是一种好习惯吗?
这显然是主观的——我个人认为它不必要地使代码混乱,如果你遵循良好的编码实践,你的方法应该足够短并且足够自我解释,以至于不需要让你的变量最终化。
好吧,将变量显式设置为 final 并让final
关键字出现在周围也是语言设计的一个问题。在 scala 中,默认设置是所有内容都是最终的和不可变的,从而推动了更具功能性的设计。如果您想知道为什么要使用 final,请查看 scala - 这应该会给您一些想法。
顺便说一句,我认为不使用 final 是不好的风格。最终变量——在这个意义上是好的或常数——不能改变。这是一种编程合同。您只是在带有最终变量的代码中减少了副作用。如果您将其省略,您也可以省略所有私有字段。何必?
在eclipse中,当您打开对话框“Source/Clean Up ...”时,您可以自动添加所有必需的final字段和许多其他被认为“更干净”的东西(所以我猜它被称为“Clean Up” ,因为不使用final会被认为是不洁的)。
这取决于您 - 使用它 - 或离开它。使用它 - 并特别查看无法应用 final 的代码。也许该代码可以改进为最终版本?
所以:是的!这是个好习惯!