2011-07-23 24 views
4

私は在庫ランチャーに基づいてアンドロイドランチャーに取り組んでいます。私はちょうど興味があるのですが、グローバル変数の多くはメソッド内のローカル変数に変換されています。Javaメソッドのグローバル変数をローカル変数に変換する利点

final VelocityTracker velocityTracker = mVelocityTracker; 
velocityTracker.computeCurrentVelocity(1000); 

だけではなく

mVelocityTracker.computeCurrentVelocity(1000); 

それはいくつかのアンドロイド事や、一般的なJavaの規則ですか?新しいVelocityTrackerに直接アクセスできるときは、それを割り当てるのは意味をなさない。

編集 はいこのコードは何度も繰り返しています。

+1

これは奇妙な最適化かもしれない、私の答え[ここ](http://stackoverflow.com/questions/6602922/is-it-faster-to-access-final-local-variables-than-class-variables参照) -in-java/6603067#6603067)。私はAndroidでの経験はありません。 –

答えて

4

これは、フィールドを何度も使用している場合に便利です。いくつかのJVMと私は、Android VMはフィールドへのアクセスを効率的に最適化しないと仮定しています。

しかし、それは過度に使用される可能性があり、一度だけアクセスされるとポイントが表示されません。

また、揮発性フィールドにアクセスしていると便利かもしれません。これにより、そのフィールドを何回使用した場合でも、同じオブジェクトを何度も使用していることが保証されます。例えば

volatile String text; 

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

あなたはローカル変数を使用しなかった場合text doSomethingのためのif文とnullのための非nullになる可能性が()。

+2

興味深い揮発性について – AlexR

1

あなたのご好意的な短い例では、この割り当てには意味がありません。しかし、一般に、変数の範囲を最小限に抑えることは良い習慣です。これにより、特定の変数を扱う特定のコードに集中することができます。

+1

フィールドが変数と同様にアクセス可能な場合、ローカル変数にフィールドを割り当てるのはどのように役立ちますか?これはどのようにして「変数の範囲を最小限に抑える」のですか? –

関連する問題