根据经验,我通常将类放在自己的文件中。 Visual Studio似乎鼓励这一点,但接口的适用性是什么?
e.g。
我有Class Foo实现接口Bar
public interface IBar
{
}
public class Foo : IBar
{
}
将这些组合在同一个文件中似乎很自然,直到另一个类实现了接口,但是将文件专用于2行代码似乎过多而且正确。
什么是合适的?
答案 0 :(得分:26)
我会将它们分成2个文件。当他们不在自己的文件中时,我经常发现课程开始变得无法管理。
想象一下,尝试在名为IBar.cs的文件中查找类Foo,反之亦然。
答案 1 :(得分:3)
由于接口的目的是为(可能)多个实现类定义“契约”,我会说将接口定义放在自己的文件中更有意义。即如果你还想让Baz实现Foo会怎么样?
答案 2 :(得分:2)
根据具体情况,我将每个接口拆分为自己的文件,或者有一个Interfaces.cs文件,我将给定命名空间中的接口组合在一起。
我永远不会将接口放在同一个.cs文件中作为实现它的类。
答案 3 :(得分:2)
我只有两种情况,我发现自己将多个顶级类型放在一个文件中:
Delegates.cs
文件是有意义的。有时候声明一大堆自动生成的部分类型实现了一堆接口是有意义的。同样,这是每种类型一行:
// Actualy code is in the autogenerated file
public partial class Foo : ICommon {}
除此之外,我每个顶级类型使用一个文件,用于接口,类和枚举。
答案 4 :(得分:2)
你当然应该把界面放在它自己的文件中。您甚至可以考虑将接口放在它自己的类库中。如果接口将由两个不同库中的两个不同类使用,则将接口放在第三个库中是有意义的,因此如果要将接口添加到新项目,则不必包含任何特定实现。在第三个库中,您还可以放置使用实现接口的类的类(例如,public void Cook(IBar x))。
答案 5 :(得分:1)
是的,拥有一个接口意味着您将拥有多个具有相同方法和属性定义的类。暂时将它放在一个文件中很方便,因为它很容易修改而无需更改文件。随着时间的推移,你会和其他课程一起使用它,如果你必须在路上做出改变,你将不得不寻找并啄正确的文件。
答案 6 :(得分:1)
我总是将它们放入单独的文件中。每个文件有多个类型只会分散IMO的注意力。我可能会为他们创建一个文件夹“Interfaces”。 另外,我认为你不应该像实际的实现那样经常修改它们,所以将它们分开至少可以促进这一点。
答案 7 :(得分:0)
就封装而言,每个对象(无论是类还是接口)都应该位于自己的文件中。即使接口只包含一个抽象方法,它在不同文件中的事实也允许更好的组织和更好的封装。您可以将这些不同的接口存储在一个文件夹中,为其提供适当的命名空间,从而提供更清晰的解决方案。