如果仅在内部使用,为什么要将静态方法标记为私有?

时间:2017-11-04 12:54:16

标签: c# performance

在非静态类中查看某人的代码时,我注意到只有私有静态方法。所以那些在内部使用。

interface IDogInterface
{
    void Bark(bool isBarking);
}

public class GoldenRevier : IDogInterface
{
    public void Bark(bool isBarking)
    {
        //Implementation...

        SomeMethod();
        SomeOtherMethod();
        AnotherMethod();
    }

    private static void SomeMethod();
    private static void SomeOtherMethod();
    private static void AnotherMethod();
}

注意:没有静态属性,没有getter或setter,只有您在上面代码中看到的内容。

为什么要将这些内部方法设为静态?我认为这样做没有任何好处。

我在上面的代码中看到错误的逻辑......我错过了什么吗?

修改

代码编辑以突出显示已接受的答案含义。

public class GoldenRevier : IDogInterface
{
    private Bark _bark = new Bark();

    public void Bark(bool isBarking)
    {
        if(isBarking)
        {
            _bark.SetLoudness(5);
            _bark.Start();
        }
        else
        {
            JustChilling();
        }
    }

    private static void JustChilling() 
    { 
         Console.Write("No barking today, just chilling!");
    }
}

2 个答案:

答案 0 :(得分:3)

您将static个方法设为私有,以便将其可见性限制为包含的类。这是一个常见的情况,因为这是您使用该方法的唯一地方。此外,如果方法永远不会使用任何对象状态,那么没有理由不使用它static

答案 1 :(得分:2)

它的编码风格。如果某个方法不使用该类的任何属性,则可以将其设为static。如果它只在该类中使用,则可以使其private。因此,如果他们不使用类的属性并且不能在其他地方重用,则可以使它们private static。你可以在没有静电的情况下离开它们。

所以它是一个样式问题 - 你是否强迫方法是静态的,如果它们可以,并且看不到你制作em private static的可重用性。

对于可读性/代码概述:它告诉一个随意的读者/评论者:在这个类之外的这个方法上没有依赖关系(并且没有使用任何类属性。

可能有助于保持内部方法更清晰,更短(干净的代码),适合DRY和使用说话名称可以简化可读性。