Преимущества Java преобразования глобальных переменных в локальные переменные в методах - PullRequest
4 голосов
/ 23 июля 2011

Я работаю над Android-пусковой установкой на основе стоковой пусковой установки. Мне просто интересно, почему в методах, например,

, много глобальных переменных преобразуются в локальные
final VelocityTracker velocityTracker = mVelocityTracker;
velocityTracker.computeCurrentVelocity(1000);

вместо

mVelocityTracker.computeCurrentVelocity(1000);

Это какая-то вещь для Android или общее правило Java? Нет смысла выделять новый VelocityTracker, когда к нему можно получить прямой доступ.

EDIT Да, этот код повторяется много раз.

Ответы [ 2 ]

4 голосов
/ 23 июля 2011

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

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

Это такжебыть полезным из вас доступ к изменчивому полю.Это гарантирует, что когда вы используете это поле много раз, вы берете один и тот же объект.Например,

volatile String text;

String text = this.text;
if(text != null)
    doSomething(text);

Если вы не используете локальную переменную, text может быть ненулевым для оператора if и null для doSomething ().

1 голос
/ 23 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...