4

したがって、さまざまなクラスの変数を参照する方法は知っていますが、すべてのグローバル変数を格納するためにVars.classを作成する価値があるかどうか疑問に思っています。

これにより、後日変更する必要がある場合に簡単になりますが、速度的には悪い考えではないかと思います。別のクラスの変数を参照するのに時間がかかりますか?

ありがとう

編集:私が「グローバル変数」と言うとき、私は「グローバル定数」を意味しました。混乱をお詫び申し上げます。他のクラスから参照できるようにしたいのですが、その場で変更されることはありません。

Vars.java

package test;

public class Vars
{
    static int variable1 = 16;
    static int variable2 = 32;
}

Start.java

package test;

public class Start
{
    public Start()
    {
        int i = Vars.variable1;
    }
}
4

5 に答える 5

7

したがって、さまざまなクラスの変数を参照する方法は知っていますが、すべてのグローバル変数を格納するVars.classを作成する価値があるかどうか疑問に思っています。

いいえ。そもそもグローバル変数を使用しないようにすることは価値があります。変数は特定のオブジェクトの状態を表す必要があります。したがって、有用なオブジェクトの適切な境界に従って変数をグループ化し、各オブジェクトが依存する必要のある他のオブジェクトを認識していることを確認します。

オブジェクト指向を捨てるつもりなら、オブジェクト指向言語を使うことにはほとんど意味がありません。

アプリケーションで適切な型を見つけるために時間をかけることは、グローバル変数を使用するよりも非常に短期的には間違いなく遅くなります...しかし、コードの保守とテストがはるかに簡単になります。

パフォーマンスに関しては、あなたはそれについてあまりにも早く心配してます。変数へのアクセス時間は、パフォーマンスに大きな影響を与えることはほとんどありません。動作する最も簡単な方法でコードを設計します。パフォーマンスメトリックと受け入れ基準を決定します。コードがすでにこれらの基準を満たしているかどうかを確認してください。そうでない場合は、なぜそうならないのかを解明し、パフォーマンスを向上させるためにできる限りクリーンな変更を実行します(常に測定します)。

さらに、変数自体はほとんどの場合プライベートである必要があります。ストレージは実装上の決定です。メソッドを介して状態を公開する方法とかどうかを検討します。

于 2012-09-27T11:34:09.030 に答える
3

グローバル変数は悪い考えです。それらについてのウェブ上のたくさんの記事があります。これは良いものです

グローバル定数を処理する場合

例えば

public static final Integer MY_CONSTANT = 1;

それでも、関連するクラスに定数を入れます。私は個人的に変数クラスを設定しません。変数が可能な限り使用に近くなるように、コードをカプセル化してください。

于 2012-09-27T11:48:20.530 に答える
2

答えはノーです。セキュリティについて考えたことがあれば、機能上の欠点はありません。

于 2012-09-27T11:34:20.050 に答える
0

グローバル変数は悪い考えです。

これにより、後日変更する必要がある場合に簡単になります。

多分あなたは定数が必要ですか?定数を変更する必要があると思われる場合は、すべての定数を1か所にまとめることは理にかなっています。定数にはusepublicstaticfinalを使用します。

package test;

public class Constants
{
    public static final double EPSILON = 0.001d;
}

package test;

public class Start
{
    public Start()
    {
        ...
        if(arg1 - arg2 < Constants.EPSILON)
        ...
    }
}
于 2012-09-27T11:43:30.567 に答える
0

私は定数をそれを使用する1つまたは複数のクラスの近くに保つことを好みます。キャッチオールオブジェクトはありません。インターフェイスはありません。

多くのオブジェクトでオブジェクトまたは値が必要な場合は、DIファクトリを使用してそれらを注入することを検討します。

値が変わったら、データベースに入れて構成としてアクセスすることを考えます。

あなたが提案したもの以外のもの。

于 2012-09-27T11:45:18.080 に答える