10

おそらくHTTPプロトコルに応じて変更する必要がある静的文字列変数があります。

静的文字列変数を変更するのは悪い習慣ですか>

static string QuoteWebServiceUrl = CommonFunctions.ReadAppSetting("QuoteWebServiceUrl");

if(url == "https")
{
  QuoteWebServiceUrl = CommonFunctions.ReadAppSetting("QuoteWebServiceUrlSecure");
}
else
{
  QuoteWebServiceUrl = CommonFunctions.ReadAppSetting("QuoteWebServiceUrl");
}

ありがとう

4

8 に答える 8

12

いいえ。もちろん、静的文字列変数の値を変更できます。なぜそれが悪い習慣だと思いますか?

于 2011-02-15T15:52:58.857 に答える
2

つまり、静的変数の変更は問題ではありません。それは変数です。変化する可能性があります。では、なぜ変更する(つまり、変更する)のは悪い習慣なのでしょうか?はい、そうするべきではない、または注意しなければならない状況がありますが、一般的にはそうではありません。

ここでの大きな問題は、アプリケーションの根底にあるアプリケーション設定を読み取ることです。それは保守性とテスト性を殺します。それは恐ろしく悪い習慣であり、すぐにやめることをお勧めします。

于 2011-02-15T15:54:24.983 に答える
1

この場合、1 回限りのセットアップのように見えますが、ASP.NET を含むマルチスレッド環境での競合状態に注意する必要があります。

于 2011-02-15T15:59:49.650 に答える
0

プログラム的に言えば、POV言語から変更してもかまいません。

それ以外の場合は、変数のロジック、つまりビジネスロジック全体での意味に依存します。

于 2011-02-15T15:56:01.057 に答える
0

静的変数を変更すること自体は悪いことではありません。

ただし、このクラスの複数のインスタンスが同じ static を変更することに関して、予防策が取られていないようです。これは潜在的な同時実行の問題です。

さらに、おそらく静的に 2 つの設定を設定し、状態に基づいて適切な方を選択する必要がありますが、静的が初期化されたらそのままにしておく必要があります。

于 2011-02-15T16:25:28.220 に答える
-1

静的変数の代わりに静的プロパティを使用できます。


private static string QuoteWebServiceUrl 
{ 
    get 
    { 
        if(url == "https") 
        {   
            return CommonFunctions.ReadAppSetting("QuoteWebServiceUrlSecure"); 
        } 
        else 
        {   
            return CommonFunctions.ReadAppSetting("QuoteWebServiceUrl"); 
        } 
    } 
}

静的プロパティ

于 2015-01-13T21:59:34.547 に答える
-2

いいえ、一般的に悪い習慣ではありません。あなたの特定のケースでは、それはひどい考えです。

于 2011-02-15T16:03:26.050 に答える