我的C#项目中的每个类都应该获得自己的文件(在您看来)?
虽然每个文件的一个类策略在Java中是严格执行的,但C#并不要求它.但是,这通常是一个好主意.
如果我有一个仅由主类使用的非常小的辅助类,我通常会违反此规则,但为了清楚起见,我更喜欢将其作为嵌套的内部类.
但是,您可以使用partial
关键字将单个类拆分为多个文件.这对于将代码与向导生成的代码分开很有用.
文件很便宜,你可以通过将许多类合并为单个文件来帮助任何人.
在Visual Studio中,在解决方案资源管理器中重命名文件将重命名该类以及项目中对该类的所有引用.即使您很少使用该功能,文件的便宜性和管理它们的便利性意味着当它除以成本时,利益是无限有价值的.
正如其他人所说,一般每种类型一个文件 - 虽然其他人已经公开/私人区分,但我只是说"每个类型一个顶级文件"(所以即使是顶级内部类型也可以获得自己的文件) .
我有一个例外,它与.NET 3.5中Func和Action委托类型的出现不太相关:如果我在项目中定义了几个委托类型,我经常将它们放在一个名为Delegates.cs的文件中. .
还有其他非常偶然的异常 - 我最近使用了部分类来使几个自动生成的类实现相同的接口.他们已经定义了适当的方法,所以这只是一个写作的例子:
public partial class MessageDescriptor : IDescriptor{} public partial class FileDescriptor : IDescriptor {}
将所有这些放入自己的文件中会有些愚蠢.
要记住所有这一切:使用ReSharper可以更轻松地访问您的类,无论它们是否在合理命名的文件中.这并不是说正确组织它们并不是一件好事; 这更像是为了强化ReSharper摇滚的观念:)
我个人认为每个类都应该在自己的文件中,这也包括嵌套类型.关于此规则的唯一例外是自定义委托.
大多数答案都排除了此规则中的私有类,但我认为这些也应该在他们自己的文件中.这是我目前用于嵌套类型的模式:
Foo.cs://仅包含Foo实现
public partial class Foo { // Foo implementation }
Foo.Bar.cs://仅包含Foo.Bar实现
public partial class Foo { private class Bar { // Bar implementation } }
这取决于.大多数时候我会说是的,把它们放在单独的文件中.但是如果我有一个私有帮助器类只能由另一个类(如链接列表的节点或元素)使用,我不建议将它们分开.
它们应该在不同的文件中,即使它看起来有点过分.这是我经常犯的错误.
总有一段时间,你已经为一个类添加了足够的代码,它应该拥有它自己的文件.如果你决定在那时为它创建一个新文件,那么你将丢失你的提交历史记录,当你不想要它的时候总会咬你.