2012-03-20 11 views
0

私はいつもWebでグローバル変数が悪いと読んでいますが、それぞれの関数にアクセスでき、アプリケーションの各関数がグローバル変数大規模なアプリケーションでは、コード内の特定のポイントでこの変数の状態をトレースすることが非常に困難になります。グローバル変数javascript、java、php、すべての言語

しかし、私の質問は、各関数がとにかく使用する必要がある変数を持っていれば、それをグローバルとして宣言する方が良いのでしょうか?毎回自分の変数を各関数の中でインスタンス化する必要はありませんか?

また、ローカル変数ではなくグローバル変数を使用する必要がありますか?

+0

GVの主な関心事は、一度ロードした天気を使用しているかどうかを不必要に保持することです。 –

+0

グローバルがあなたのケースに合っている場合は、それらを使用してください。必要に応じて「名前空間」オブジェクトのプロパティを作成することができます。便利できれいなアプローチなので、本来はグローバル(メモリ使用、パフォーマンスなど)には何も問題はありません。異なるチームや貢献者との大きな開発に取り組んでいると、管理が難しくなる可能性があります。 – RobG

答えて

0

すべての変数は、実際のまたは想像できるエンティティを表します。エンティティが一意であることが確かな場合は、静的変数を持つことは問題ありません。たとえば、screen/keybord/mouseデバイスはjava.awt.Toolkit型の静的変数で表されます(getterでアクセス可能)。 しかし、そのような場合はまれです。通常、プログラマはエンティティの単一インスタンスを考え、そのための静的変数を宣言し、別の同様のエンティティが必要になります。これは面倒なリファクタリングで終わります。

0

これは、コード実行中のメモリ使用量に関するものです。 コードの実行中は常にオブジェクトの数を減らしてください。スコープが狭いオブジェクト(メソッドのスコープ)を使用すると、オブジェクトのメモリ使用量が少なくなり、メモリの使用効率が向上します。したがって、変数を必要以上に狭くする必要があります。 グローバル変数の文は、アクセス修飾子(public、private、defaultなど)を持つJavaの場合とまったく同じではなく、グローバル変数(クラス変数)にprivate修飾子がある場合、クラス外では変更できません。

関連する問題