在每个循环中使用final in a

时间:2013-08-10 08:51:48

标签: java final

我与有效的java有一点冲突。一方面,它强烈鼓励使用最终修饰符。它还鼓励使用foreach循环。

但是我没有在任何地方看到任何代码,代码如下:

for (final element e : list) {
  // do whatever.
}

如果预计元素不会改变,那么使用final似乎是好的。为什么不那么常见?

4 个答案:

答案 0 :(得分:7)

通常开发人员保留默认值,只在需要时添加代码。即什么是最短的代码编写更容易。想想一个演讲厅,他们要求你举手,如果你做了什么,然后他们会要求你举手,如果你不这样做,大约一半的房间都不会投票。

恕我直言默认应该是最终的,您可以使用关键字var来表示可以更改的值。这样,更多的领域将是最终的。

在这种特殊情况下,我不会使局部变量最终,因为方法应该足够短,以便您可以推断变量是否被更改。如果你不能轻易解决这个问题,你的循环/方法太复杂了。

但是对于字段,我建议尽可能将它们作为最终版本,特别是如果它们不是私有的,因为读取可能使用它的所有代码并不容易。

答案 1 :(得分:5)

它没有被使用,因为它的“代码噪音”。

final关键字应该用于所有方法参数等等,但事实并非如此,因为虽然更“正确”,但它的可读性较差。

答案 2 :(得分:2)

有很多地方你可以 - 有人说应该 - 放置最后的关键字。一个常见的例子是方法参数。看看这段代码:

public static long pow_mod(final long base, final long exponent, final long mod) {
    // body
}

还有另一种惯例可以在80个字符后断开代码行。这个声明甚至还没有缩进(它必须在一个类中)并且它已经超过了那个数量。 Java是一种非常冗长的语言,不需要更加混乱你的代码;特别是因为没有任何东西可以使局部变量最终。

答案 3 :(得分:0)

基本上,元素在for循环的范围内是最终的。在那里获得的收获并不多。