使用静态方法和变量 - 好与坏

Shr*_*rma 9 c# static static-methods static-members

我正在开发C#和asp.net Web应用程序.

我有一个叫做实用程序的通用类,我在这个公共实用程序类中有很多公共和静态变量.

由于这个数字逐渐增加,我想知道将实用程序方法和变量存储为公共静态是一种好的做法.

我的代码示例

public class utilities
{
    public static string utilVariable1 = "Myvalue";
    public static string utilVariable2 = "Myvalue";
    public static string utilVariable3 = "Myvalue";
    :
    public static string utilVariableN = "Myvalue";


    public static string UtilMethod1()
    {
         //do something
    }

    public static string UtilMethod2()
    {
         //do something
    }

    public static string UtilMethodN()
    {
         //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*l B 12

static类没有任何内在错误,尽管它们通常不应该有状态(字段).您对public static字段的使用表明情况并非如此,因此您似乎正在使用static稍微滥用关键字.如果你的类需要有状态,那么它应该是一个普通的非静态类,你应该创建它的实例.否则,类上可见的唯一公共字段应该是const(考虑Math类,使用常量,例如Math.PI- 很好地使用static方法和字段).

另一个考虑因素是凝聚力.方法通常存在于一个类中,因为它们以某种方式密切相关.同样,这个Math班级就是一个很好的例子; 那里的一切都与数学有关.在某些时候,您可能希望将全局实用程序类拆分为多个更小,更集中的实用程序类.有关凝聚力的一些例子,请参阅维基百科,听起来你的用法属于"巧合的凝聚力(最差)".


acr*_*ron 6

这种方法对于方法没有任何问题,但如果它们是静态的和公共的,变量应该是const.如果它们可能会发生变化,那么您应该查看由多个组件操纵的变量的不同结构.

就个人而言,我是Singleton模式的粉丝.