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

在这种情况下,它看起来只是一次性设置,但您必须注意多线程环境(包括 ASP.NET)中的竞争条件。

于 2011-02-15T15:59:49.650 回答
0

从编程上讲,从语言 POV 可以更改它。

否则取决于变量的逻辑,它在整个业务逻辑中的含义。

于 2011-02-15T15:56:01.057 回答
0

就其本身而言,更改静态变量并不是一件坏事。

但是,我没有看到对此类修改相同静态的多个实例采取任何预防措施。这是一个潜在的并发问题。

此外,您可能应该在静力学中设置这两个设置,并根据您的情况选择一个合适的设置,但在静力学初始化后不要理会它们。

于 2011-02-15T16:25:28.220 回答
0

对于多线程编辑静态变量不好,不可扩展,在一些随机的情况下会运行不恰当。但......

在某些业务逻辑中,一次只有一个线程可以处理或限制为一个线程。如果是这种情况,它完全可以使用.

在这些情况下,它很好,我们有时可能没有其他选择而是改变(其中一种情况是使用带有异步任务的 WEBAPI 时,最重要的是一次只有一个线程,并且用户希望每个 api 命中的动态状态更新)

于 2020-10-22T08:18:06.120 回答
-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 回答