web-dev-qa-db-ja.com

グローバル変数を使用してほしいと上司に言うべきこと

私は現在インターンシップを開始してから4か月です。コードを確認するとき、上司は特定のオブジェクトを、1つのアセンブリ内のいくつかの個別のクラスにまたがるいくつかのメソッドにローカルに保持していたことを気にいりませんでした。彼は私が毎回新しいオブジェクトを作成することを気に入らず、代わりにどこからでもアクセスできる単一のオブジェクトを作成するように私に言いました。したがって、静的クラス内で静的オブジェクトとして作成し、ここから参照するだけで使用できます。

私はプロとして4か月しかプログラミングしていないので、これにどのように対処しますか?

13
Darren Young

1つのオブジェクトで十分な場合、毎回オブジェクトを作成することは無駄であり、ここ上司は正しいかもしれません。

問題は、そのオブジェクトへの適切なアクセスです。静的オブジェクトを常に返す適切な可視性を持つファクトリーのようなメソッドは、思い浮かぶ最初のソリューションです。他のものは確かに存在します。

33
9000

特定のケースについてコメントすることはできませんが、グローバル変数を使用することは良い解決策になる場合があります。 Javaの System クラスは静的なグローバル変数でいっぱいです。

しかし、一般的に、あなたが正しいとあなたの上司が間違っていると思うなら、なぜあなたは上司になぜ説明するように頼みませんか?グローバル変数はより良い解決策ですか?プレーンな「私はそれが好きではない」は「グローバル変数は悪である」のと同じくらいあいまいです。あなたは上司にもっと要求する必要があります!

彼が彼のスタンスの理由を与えることができず、あなたがあなたのスタンスに理由を与えることができる、またはその逆の場合、それは良い学習の機会です。両方があなたのスタンスを正当化できるのであれば、それはおそらく好みの問題、または経験の問題です。

8
Joonas Pulakka

あなたの立場にいる人として、あなたができることのほとんどは学ぶことです。オブジェクトが本質的に定数の場合(つまり、オブジェクトを変更できず、状態を維持できない場合)、上司は正しい可能性があります。静的定数オブジェクトを持つことに害はありません。結局のところ、PIの定義はいくつありますか?

一部の人々は、宗教的な熱狂のポイントに「グローバルなオブジェクトなし」の考え方を擁護します。これは、2つの理由のうちの1つです。グローバル変数/オブジェクトの使いすぎが原因で、バグやシステムの脆弱性を追跡するのが困難であったこと、または、それが悪いために自分で考えられないと聞いたことがあるからです。私は個人的には、脆弱さに強く打たれ、バグを追跡するのが困難な人々のグループに分類されますが、ここでもいくつかのバランスを学びました。

もし私があなたの立場にいるなら、私は先に進んで上司が言うことをします-それは結局のところ彼の尻尾です。その後、時間をかけてその選択の効果を観察してみます。これは効果的な学習ツールです。

5
Berin Loritsch

特定の状況によっては、グローバル変数が最善の解決策になる場合があります。組み込みプログラミングでは、グローバルはスタックスペースを占有していないため、適切な選択です。

グローバルかどうかにかかわらず、グローバルに接頭辞を付けるのはよい実践法です。これにより、コードをぐるぐる回っている他のプログラマーは、コードが混乱した場合の影響を認識できます。

2
Max Kielland

上司が望んでいたのは、シングルトンパターンを使用することでした。複数のインスタンスから特定のオブジェクトにアクセスする必要がある場合、これは非常に良い方法です。

これは ウィキペディアの説明へのリンクです

1
guiman