我应该尽可能地让我的方法保持静态吗?

Nob*_*ody 12 c# parameters methods static

我经常思考这个问题......这可能是一个愚蠢的问题但是这里有.

说我有这个班:

public class SomeClass
{
    public int AProperty { get; set; }

    public void SomeMethod()
    {
        DoStuff(AProperty);
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做有什么好处:

public class SomeClass
{
    public int AProperty { get; set; }

    public static void SomeMethod(int arg)
    {
        DoStuff(arg);
    }
}
Run Code Online (Sandbox Code Playgroud)

显而易见的唯一优势是我现在可以SomeMethod直接访问.

因此,如果一点点重构允许或浪费我的时间,将这些方法保持静态是一种好习惯吗?

编辑:我忘了提及(和ShellShock的评论提醒我),我问的原因是我使用ReSharper并且总是提出"方法X可以变为静态"的建议等等......

Mic*_*ins 15

Static不是邪恶的.Static如果使用不正确是邪恶的,就像我们的编程工具包的许多部分一样.

Static可能非常有利.正如这里接受的答案所指出的那样,static可以有一个潜在的速度提升.

作为一般规则,如果该方法不使用该类的任何字段,那么它是评估其功能的好时机,但是最终可以在不实例化对象的情况下调用的实用方法通常是有用的.例如,DirectoryInformationFileInformation类包含有用的静态方法.

编辑

感觉有义务指出它确实让嘲弄变得更加困难,但它仍然是可以测试的.

它只是意味着你需要更加考虑其中 static的方法去,让你随时可以测试他们,而不需要依赖于一个模拟/存根.(即:不要将它们放在需要与数据库持久连接的DTO上).