Переменные экземпляра Java по сравнению с локальными переменными

Купите Счастливая Клавиатура Взламывания , который имеет Ctrl в Правильном месте (Caps Lock перемещена в другое место). Это имеет превосходный ответ и настраивается через Dip-переключатели для максимальной интеграции на Mac, Windows и Linux (например, можно переключить то, что является Высоким звуком и что является ключом Windows прямо с клавиатуры, никакое требуемое программное обеспечение).

Это также имеет очень маленькое место, если это удовлетворяет Вашему воображению.

23
задан Erik 31 October 2018 в 14:18
поделиться

7 ответов

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

3
ответ дан 29 November 2019 в 01:25
поделиться

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

Локальные переменные больше похожи на промежуточные значения, используемые для достижения результата или вычисления чего-либо на лету. Переменные экземпляра больше похожи на атрибуты класса, такие как ваш возраст или имя.

3
ответ дан 29 November 2019 в 01:25
поделиться

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

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

2
ответ дан 29 November 2019 в 01:25
поделиться

Попробуйте подумать о своей проблеме с точки зрения объектов. Каждый класс представляет отдельный тип объекта. Переменные экземпляра - это фрагменты данных, которые класс должен запомнить, чтобы работать либо с самим собой, либо с другими объектами. Локальные переменные следует использовать только для промежуточных вычислений, данных, которые вам не нужно сохранять после выхода из метода.

1
ответ дан 29 November 2019 в 01:25
поделиться

Старайтесь не возвращать более одного значения из ваших методов в первую очередь. Если вы не можете, а в некоторых случаях действительно не можете, я бы рекомендовал инкапсулировать это в классе. Как раз в последнем случае я бы рекомендовал изменить другую переменную внутри вашего класса (переменную экземпляра). Проблема с подходом с переменными экземпляра заключается в том, что он увеличивает побочные эффекты - например, вы вызываете метод A в своей программе, и он изменяет некоторые переменные экземпляра (-ов). Со временем это приводит к увеличению сложности вашего кода, и обслуживание становится все труднее и труднее.

Когда мне приходится использовать переменные экземпляра, я пытаюсь сделать then final и инициализировать его в конструкторах классов, чтобы минимизировать побочные эффекты.

1
ответ дан 29 November 2019 в 01:25
поделиться

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

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

Одна переменная может быть превращена в класс, когда это основная концепция. Например, реальные идентификаторы: они могут быть представлены как строки, но часто, если вы инкапсулируете их в их собственный объект, они внезапно начинают «привлекать» функциональность (проверка, связь с другими объектами и т. Д.)

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

8
ответ дан 29 November 2019 в 01:25
поделиться

Объявлять переменные как можно более узкими. Сначала объявите локальные переменные. Если этого недостаточно, используйте переменные экземпляра. Если этого недостаточно, используйте переменные класса (статические).

I вам нужно вернуть более одного значения, вернуть составную структуру, такую ​​как массив или объект.

2
ответ дан 29 November 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: