Использовать финал внутри a для каждого цикла - программирование

Использовать финал внутри a для каждого цикла

У меня небольшой конфликт с эффективной java. С одной стороны, он настоятельно рекомендует использовать финальный модификатор. Он также рекомендует использовать цикл foreach.

Однако я нигде не видел какой-либо фрагмент кода, который выглядит следующим образом:

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

Если элемент не будет изменен, то использование final окажется хорошим. Почему это не так часто?

4b9b3361

Ответ 1

Обычно разработчики оставляют значения по умолчанию и только добавляют код, когда им это нужно. то есть самый короткий код для написания проще. Подумайте о лекционном театре, и они просят вас поднять руки, если вы что-то сделаете, а затем они попросят вас поднять руки, если вы этого не сделаете, примерно половина комнаты не будет голосовать вообще.

IMHO Значение по умолчанию должно быть окончательным, и для значений, которые могут измениться, у вас будет ключевое слово var. Таким образом, гораздо больше полей будет окончательным.

В этом конкретном случае я не делаю локальные переменные окончательными на основе того, что методы должны быть достаточно короткими, чтобы вы могли определить, изменена ли переменная или нет. Если вы не можете легко это решить, ваш цикл/метод слишком сложный.

Для полей, однако, я рекомендую делать эти окончательные, когда это возможно, esp, если они не являются частными, так как не все так легко читать весь код, где он может быть использован.

Ответ 2

Он не используется, потому что его "кодовый шум".

Конечное ключевое слово должно использоваться для всех параметров метода и т.д. и т.д., но это не так, потому что, хотя более корректно, оно менее читаемо.

Ответ 3

Есть много мест, где вы могли бы, - говорят некоторые, - поместить последнее ключевое слово. Общим примером являются параметры метода. Посмотрите на эти фрагменты кода:

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

Существует еще одно соглашение о разрыве строк кода после 80 символов. Эта декларация еще не отступом (она должна быть внутри класса), и она уже длиннее этой суммы. Java - очень подробный язык, нет необходимости загромождать ваш код еще больше; тем более, что нечего делать, чтобы локальные переменные были окончательными.

Ответ 4

В принципе, элемент будет окончательным в пределах области for-loop. Здесь не так много.