最好将要从main()调用的所有方法声明为静态方法,还是创建一个包含所有方法(包括main)的类的对象?

时间:2019-04-27 20:10:30

标签: c# object static

我通常需要了解在以下情况下首选的方法:

我在“程序”类中具有主要功能以及其他一些功能。我已经将逻辑分解为函数,并从主函数中调用了所有逻辑。

现在可以从主菜单中调用函数了,我有两个选择:

1-将所有方法设为静态

2-在main()中创建一个“ Program”类的对象,然后调用object.Method()

我想学习我今后所有编码工作的首选方式

我有类似的东西


class Program
{
    public static void main()
    {
        CheckFile();
        ReadFiles();
        PushToDB(); 
    }

    private bool CheckFile() {...}

    private string[] ReadFiles() {...}

    private string PushToDB() {...}
}

2 个答案:

答案 0 :(得分:2)

TL; DR 最好将代码放在自己的类中,而不是直接放在控制台应用程序中,除非这很简单。


在可行的范围内,我们的代码不应该知道它是否正在控制台应用程序,Web应用程序等中执行。

因此,虽然没有什么规则,但是这里有关于将代码放置在何处的建议:

  • 最佳-创建一个单独的类库并将您的类放在此处。
  • 第二,最好-创建一个单元测试应用程序并将您的课程放在这里。您可以稍后再移动。
  • 第三,在控制台应用程序中创建一个单独的类。您可以稍后再移动。
  • 遥远的第四,不是理想的情况:直接将其放在您的Program类中。

之所以将其放在单独的类库中有帮助,是因为它可以帮助您避免意外写入类中的控制台输出(Console.WriteLine),因为您的类不知道它是否在一个类中执行控制台应用程序或其他地方。

无论您将类放在何处,单独的类都是更好的选择,因为它鼓励您将小的功能分解为单独的单元。我并不是说我们对此需要一丝不苟,但这确实使生活更轻松。

例如,您可能想创建一个仅用于ReadFiles部分的类,而另一个用于PushToDb部分。如果您创建这样的类:

public class FileReader
{
    public string[] ReadFile(string filePath)
    {
        // read some files and populate some data
    }
}

然后,仅对其中一部分进行测试要容易得多。在编写所有这些内容时,我们将在读取数据的部分和将数据保存到数据库的部分中犯一些小错误。无需一次尝试同时进行这两项工作,而是使我们可以一次只处理一个部分,并在进行下一部分之前对其进行测试。

之所以提到单元测试项目,是因为与在控制台应用程序中相比,在单元测试项目中测试单个代码也更容易。如果要在控制台应用程序中测试一段代码,则必须对其进行编辑以运行此部分,然后再次进行编辑以运行该部分,依此类推。

但是如果编写单元测试,则可以运行一个测试,运行另一个测试,再次运行第一个测试或一起运行所有测试。与控制台应用程序不同,您不必不断修改代码来告诉它要运行哪个部分。

尽管我没有在这个答案中包含任何关于单元测试的真实解释,但这是一个很好的习惯。我希望我在不断编写控制台应用程序来测试我的代码时了解它们很多年了。单元测试是一个很棒的习惯,有些像我这样的开发人员学习得晚,而有些则从未学习。如果您早日习惯,它将使您以后的编码变得更加有趣和轻松。

答案 1 :(得分:0)

如果您要编写具有直接逻辑的实用程序(先执行A,然后执行B,然后执行C,然后执行关闭),那么该程序的种类最多为200行代码,并且可以在一天内实施,并且此后很少再访问,那么我认为将方法保持静态是可以的。

另一方面,如果程序更大,更复杂,那么有时它会告诉您它本身需要更精细的工程。