Я часто определяю переменные как глобальные (приватные) в моем классе, когда программирую на Android.В случае, если мне нужно получить к нему доступ позже, скажем, в другом методе после того, как он был назначен в onCreate ().
То, что вы имели в виду, является термином для переменной Class Scope
.
Я знаю, что в любом случае я получу ту же функциональность, но есть ли какая-либо выгода в плане производительности или безопасности для встроенных / локальных переменных метода в Java (особенно в Android, но также в целом) по сравнению с объявлением их в качестве частных глобальных переменных в классе?
Основным преимуществом использования переменной области действия метода является ремонтопригодность .Рассмотрим следующий класс с переменной класса class:
public class SampleClass {
// a class scope variable
private int mHeight;
private int getSquareValueOfHeight() {
return mHeight * mHeight;
}
private void increaseHeightByOne() {
mHeight = mHeight + 1;
}
}
у нас есть два метода;getSquareValueOfHeight()
, который читает значение mHeight
и возвращает его квадратное значение, и increaseHeightByOne()
, который изменил значение mHeight
.
Вы можете видеть, что вам нужно проверять mHeight
всякий раз, когдавам нужно изменить оба метода.Как насчет того, есть ли 3 или 5 или более методов доступа к mHeight
?Вы должны перепроверить все методы, чтобы убедиться, что изменение не нарушает весь ваш код.
Теперь рассмотрим следующий класс:
public class SampleClass {
private int height;
private int getSquareValueOfHeight(int value) {
int height = value * value;
return;
}
private int increaseHeightByOne(int height) {
return height + 1;
}
}
У нас есть два метода, которые используютзначение из его параметра.getSquareValueOfHeight()
вернет возведенное в квадрат значение без изменения переменной height
области видимости класса, поскольку у него есть собственная переменная height
(это механизм затенения).Когда вы вызываете следующий код:
SampleClass sampleClass = new SampleClass();
int value = sampleClass.getSquareValueOfHeight(5);
переменная области видимости класса height
не изменится.Поэтому вам не нужно беспокоиться о том, что изменение нарушит весь ваш код.