使用静态方法的充分理由?

Ole*_*ers 3 c# resharper static static-methods

我使用静态方法来处理我真正想要静态的事情。我使用 ReSharper 来提高代码质量。有时 ReSharper 建议可以将方法设为静态。

当我上以下课时:

public class WhatEverClass {
    private string DoSomethingFancy(string input) 
    {
       string fancyStuff;
       // Fancy Stuff here
       return fancyStuff;
    }

    public WhatEverClass() {
       string awesome=DoSomethingFancy("some fancy string");
    }
}
Run Code Online (Sandbox Code Playgroud)

ReSharper 可能会说“DoSomethingFancy 可以变为静态”。

我知道它可以变成静态的,但是真的有充分的理由这样做吗?或者我应该忽略这些建议?

Tig*_*ran 6

通过定义静态方法(即计算某些内容的过程),您可以向消费者表达关于函数无状态性的意图API

当我们使用static函数时,我们不希望它在其内部变量中保存计算状态或某些计算的内部值static private,因此即使在第一次调用期间传递相同的参数,对该函数的下一次调用也可能会产生不同的结果。

简而言之:只要您看到一个函数仅对参数执行操作而不保留某些状态,那么它就是一个很好的候选者static