在C#项目中组织代码

时间:2014-02-10 10:36:30

标签: c# project-organization

我有一个界面:

public interface IMyObject
{
}

我有一个抽象类:

public abstract class MyObject : IMyObject
{
}

我有一节课:

public class MyExtendedObject : MyObject
{
}

在我的项目中有很多这样的接口,摘要和混凝土。我想知道在命名空间(项目中的文件夹)的角度组织代码的最佳方案是什么。我应该将所有相关的东西放在同一个文件夹下还是应该创建,例如抽象类的Base命名空间,接口的Interfaces名称空间和扩展对象的另一个名称空间?

2 个答案:

答案 0 :(得分:5)

最佳方式是主观的和与项目有关的。

就像我想说的那样:

移动到单独的文件夹接口和抽象类中,因此将它们与具体的实现类分开。

+ Absrtacts 
     -> IMyObject.cs 
     -> MyObject.cs 

+ Concrete 
     -> MyExtendedObject.cs

答案 1 :(得分:3)

Robert C. Martin(敏捷的创始人之一,现在是软件工艺运动)就really worth watching

进行了全面的讨论。

它基于Ivar Jacobson的Object Oriented Software Engineering: A Use Case Driven Approach

用几句话来概括它,你的项目结构应该反映它的模型,而不是你使用的技术或特定的语言结构。在你的抽象/接口/具体类的情况下,这意味着使用一个结构,你把所有的抽象类放在一个文件夹/ namspace /程序集中,你在另一个文件夹/命名空间/程序集中的具体类是不可取的(甚至虽然找到采用这种方法的项目非常普遍。)