非静态类中的专用静态字段

Hop*_*ess 5 c# solid-principles

有一个这样的课:

class Application
{
    private Process _process; 

    private static string _applicationPath = string.Empty;

    public void Start(string arguments)
    {
        if (!File.Exists(_applicationPath))
            Deploy();
        _process = Process.Start(_applicationPath, arguments);
    }

    public void SomeMethod()
    {
        //method that manipulate _process
    }

    private void Deploy()
    {
        // copying, installation steps (takes some time) and assign _applicationPath
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 我使用静态字段是不是很糟糕?预计Application的其他实例将使用相同的_applicationPath.
  2. 这是违反SRP原则(SOLID)的一个例子吗?我应该向其他班级提取"部署责任"吗?

D S*_*ley 2

我使用静态字段很糟糕吗?

这取决于你用它做什么。在这种情况下,由于您使用非静态方法( )更改了Deploy()它,那么是的,它可能很糟糕。如果所有实例的值都相同,则将其设置在静态构造函数或属性中(假设应用程序配置将设置它)。

这是违反 SRP 原则 (SOLID) 的示例吗?

这个班级的职责是什么?你能从逻辑上提取Deploy和 ,Start还是其中一个需要另一个?