C# 面向对象文件结构?

C# 面向对象文件结构?,c#,oop,file,class,structure,C#,Oop,File,Class,Structure,我最近刚开始用对象编程,我正在努力尽早养成好习惯 我计划构建应用程序的方式是有两个文件: 1:Program.cs-此文件将包含应用程序的主要逻辑 2:Class.cs-此文件将包含所有类定义 很简单。我想知道我是否应该有更多的文件。。。好吧,你告诉我 任何帮助都将不胜感激 一般认为每个类都应该有自己的文件 Program.cs-此文件将包含 应用程序的主要逻辑 我假设当你这么说的时候,你的意思是主类在这个文件中。具有应用程序入口点的类。逻辑的各个部分应该分离出来,放在最有意义的类中 指向面向对

我最近刚开始用对象编程,我正在努力尽早养成好习惯

我计划构建应用程序的方式是有两个文件:

1:Program.cs-此文件将包含应用程序的主要逻辑 2:Class.cs-此文件将包含所有类定义

很简单。我想知道我是否应该有更多的文件。。。好吧,你告诉我


任何帮助都将不胜感激

一般认为每个类都应该有自己的文件

Program.cs-此文件将包含 应用程序的主要逻辑

我假设当你这么说的时候,你的意思是主类在这个文件中。具有应用程序入口点的类。逻辑的各个部分应该分离出来,放在最有意义的类中

指向面向对象设计的链接:

指向名称空间的链接:


我唯一的建议是将class.cs中的每个类分解为自己的名为ClassName.cs的文件

这将使查找和修复错误变得更容易


每个文件中的代码越少=查找有问题代码的搜索越少。

每个类都应该有自己的文件,而不是一个包含许多类的.cs文件。我不确定,没有尝试过,但您的IDE可能会强制执行此操作。

对于2.0+应用程序,普遍接受的原则是每个类或部分类都有一个文件。对于任何非平凡的应用程序,您肯定不希望将所有类定义都放在一个文件中。

以下是一些帮助您入门的基础知识=

; ; ; ; ; ; 解决方案的体系结构可能如下所示:

一个项目为您的类每个文件一类; 一个用于数据访问的项目; 一个用于GUI的项目; 集成层的一个项目,例如,等。 请记住,您必须使每段代码尽可能可重用。通过将业务对象写入独立项目,您的类将允许您稍后将此项目引用到另一个项目中,因此您不必重新编码所有业务逻辑方法等以及业务对象类、枚举、接口等

面向对象的设计试图概括对象的每一个实际方面,并使其成为业务对象的最通用类。例如:

// File: Person.cs
public class Person {
    public string Name { get; set; }
    public string Number { get; set; }
    // Some other general properties...
}

// File: Customer.cs
public class Customer : Person {
    public Customer() {
        Orders = new List<Order>();
    }
    public string CreditTerm { get; set; }
    public IList<Order> Orders { get; }
}

// File: Contact.cs
public class Contact : Person {
    public long PhoneNumber { get; set; }
    public long FaxNumber { get; set; }
}

// File: Supplier.cs
public class Supplier : Person {
    public Supplier() {
        Salesperson = new Contact();
    }
    public Contact Salesperson { get; }
}
还建议您指定每个项目代表什么。让我们以一个客户管理应用程序为例:


MyCompany.MyCustomerMgmtSoftware.Domain同意,但如果有只用于特定类的小助手类,我通常会将它们与它们所帮助的类放在同一个文件中。@Robert,我有时也有这样做的习惯。这取决于场景,但通常我遵循的规则是每个类都有自己的文件。每个类文件应该有不同的命名空间吗?我甚至可以在不同的文件中使用相同的名称空间吗?@Soo:所有的类都进入相同的名称空间,除非你正在构建一个外部库来链接,或者试图分割一些不太可能的大型功能。名称空间可以类似于MyProgramName,可以将其拆分为:ProgramName.Main ProgramName.Classes吗?我觉得这是个好主意,是不是太多了?如果Program.cs将包含主逻辑,那么类中将包含什么?也许你的意思是将逻辑封装在GUI或控制台中的主要功能。完全不同于:1类一个项目,每个文件一个类;2一个项目用于您的数据访问;您需要将BL&DA项目分解为多个项目。例如Employees.Biz、Employees.Data、Customers.Biz、Customers.Data,我假设您可能在每个项目中都有多个类,它们各自独立的4个项目。将所有BL堆积到一个ginormous程序集中需要单独的应用程序来包含它们不需要/不想要的代码。有人可能会在你不需要的代码段中破坏代码,但由于你引用了dll,你的应用程序也被破坏了。这是一个很好的引用,但对于刚刚构建第一个程序的人来说,这可能是TMI。对于几乎所有其他人来说,除非他们正在建立ERP系统。@Chris L:我同意。对于小项目,我是这样说的。在我看来,Soo不会为你之前提到的巨大项目做好准备。对于一个小公司的住宅项目来说,这种结构就足够了。@罗伯特·哈维:我也同意你的看法。尽管如此,我无法判断苏的知识。也许他知道ERP系统的一些知识,或者他可以在我提供给他的链接中简单地将他所知道的联系起来。他知道什么对他有用,不是我。我提供了一些我认为适合一般用途的链接和详细信息。一旦苏读了这些文章,他肯定能下定决心。此外,这可能导致h 当他可能还记得读过类似他将来所做的事情时,似乎对进一步的参考很有用=