我有一个界面:
public interface IMyObject
{
}
我有一个抽象类:
public abstract class MyObject : IMyObject
{
}
我有一节课:
public class MyExtendedObject : MyObject
{
}
在我的项目中有很多这样的接口,摘要和混凝土。我想知道在命名空间(项目中的文件夹)的角度组织代码的最佳方案是什么。我应该将所有相关的东西放在同一个文件夹下还是应该创建,例如抽象类的Base命名空间,接口的Interfaces名称空间和扩展对象的另一个名称空间?
答案 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 /程序集中,你在另一个文件夹/命名空间/程序集中的具体类是不可取的(甚至虽然找到采用这种方法的项目非常普遍。)