2014-01-30 3 views
0

Я пытаюсь понять объявления переменных в Java.Объявление переменных в java в методах

На самом деле, я пытаюсь понять, почему вы не объявляете переменные в верхней части класса, инициируете их, а затем используйте по мере необходимости.

В книге Java Headstart говорится, что локальные переменные объявляются внутри метода и инициируются внутри кодового блока. Я понимаю этот аспект.

Мой вопрос: если вы знаете переменную, почему бы вам не объявить ее в начале метода, а не ждать и объявлять/инициализировать в середине кода?

Не может ли сделать код более трудным для чтения?

например:

Class Foo { 

while.... blah blah 

    int bar = 3 + dog.getsize(); 

} 
+1

Возможный дубликат [Объявлять локальные переменные как можно позже] (http://stackoverflow.com/questions/10204828/declare-local-variables-as-late-as-possible-or-at-the-nearest-curly -brace-they-b) – Reimeus

ответ

2

Это действительно вопрос стиля. Однако, как правило, лучше всего объявлять локальные переменные рядом с тем, когда они впервые используются. Это упрощает понимание кода. Представьте себе большой метод с сотнями линий (плохая практика кстати :)). Если переменная объявлена ​​в верхней части, тогда ссылаются на сотни строк позже, это может затруднить чтение кода.

+0

Я вижу. Мой мыслительный процесс думал о том, чтобы иметь его заранее, но, как вы говорите, к тому времени, когда я доберусь до реализации какого бы то ни было кода, мне нужно было бы просто вернуться назад, найти эту переменную, а затем использовать ее. Теперь имеет смысл. Спасибо! – rathor1622

1

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

Кроме того, переменные могут быть инициализированы, когда они объявлены, что делает более короткий код. Поместив объявление рядом с тем, где он используется, он имеет отношение к разделу метода и легко находит тип. Его легче читать и писать такой код.

Это, как говорится, я предпочитаю помещать большинство моих объявлений переменных (и инициализации) в верхней части блока или метода, к которым они относятся.

Я только ставил методы на уровне класса, если им нужно упорствовать между вызовами методов. Все, что имеет отношение только к методу, должно быть объявлено в методе. Вещи, относящиеся к коду, объявляются в верхней части блока.

0

Предположим, что ваш метод имеет длину 50 строк, и вам нужно использовать эту переменную только в строке 48. К тому моменту, когда вы прочитали первые 47 строк, может возникнуть проблема с запоминанием того, как эта переменная пишется и какие ее данные type есть. Вот почему это хорошая идея, чтобы локальные переменные были объявлены незадолго до того, как они понадобятся. Существует исключение, если переменная будет объявлена ​​внутри блока try, и вам нужно проверить значение после завершения блока try, но в этом случае вы объявляете прямо перед попыткой.

0

От JavaDoc

В Java есть четыре вида переменной:

  1. Переменные экземпляра (Non-Static Fields)
  2. Переменные класса (статические поля)
  3. Локальные переменные
  4. Параметры

Если вы объявляете переменную в классе, то java будет инициализировать ее значение для вас. при объявлении локальной переменной вы должны инициализировать ее значение, чтобы избежать Variable might not have been initialized error

Хотя он всегда будет зависеть от объема переменной и вашего алгоритма. вы всегда должны заботиться о readability вашего кода при объявлении.

Дальнейшая ссылка на Initialization in java.

Смежные вопросы