2009-10-16 100 views

回答

17

我更喜欢每个文件一个类。您永远不必搜索正确的文件名,因为它始终是类名称。

+0

好的,但嵌套类呢?继每个文件策略一个类之后,你会让主类变得部分吗?那么你会有MainClass.cs和MainClass.NestedClass.cs ... – ParmesanCodice 2009-10-16 08:50:20

+0

而且?你想说什么?实际上,我经常在这种情况下为MainClass创建一个文件夹,尤其是对于大型静态类。私有嵌套类不(总是)需要他们自己的文件,但公共的文件应该。 – 2009-10-16 08:57:15

+0

我不想提出任何观点,我在问蒂姆他是如何严格遵守每个文件策略的一类关于嵌套类的。 – ParmesanCodice 2009-10-16 09:01:39

3

我认为这是最好有每个文件一个类,并组织他们在具有相同的层次结构,作为命名空间的文件夹。

3

大多数程序员会认为每个文件一个类是最佳实践。

4

通常最好的做法是每个类有一个文件。

有些人,不是我喜欢有不止一个,如果他们是相关的,非常非常小的规模。其他人可能会在原型阶段做到这一点。我说开始,留在每一个文件作为他的重要著作Code Complete

引述确实斯科特·麦康奈尔在他的授课质量话语,“把一个类在一个文件中,文件是不只是持有桶一些代码如果你的语言允许的话,一个文件应该包含一个只支持一个目的的例程集合,一个文件强化了一个例程集合在同一个类中的想法。

6

每个文件一个类。

这样你可以避免合并编辑时,两个人编辑同一个文件,因为一个正在class A和其他正在class B。虽然这在任何源代码控制系统中都应该是自动的,但这是一个额外的步骤,可能会被错过,这会导致问题。

远东最好是有一个过程,不允许摆在首位出现这种错误。

+0

您不应该手动合并编辑,因为两个人在同一个文件的不同部分工作。如果你这样做,也许是时候换一个新的版本控制系统了。 – 2009-10-16 09:00:53

+0

@Matthew - 同意,但这是一个额外的步骤,没有必要,并且会在有人忘记在检查编辑之前忘记执行合并时不时出现问题。 – ChrisF 2009-10-16 09:03:28

+0

我不能说其他版本控制系统,因为我独占使用Subversion,但svn处理自动合并,除非编辑文件中的相同部分(即两个人编辑当前签入文件的第54行) – 2009-10-16 09:10:28

2

通常 - no。 以下练习“每个文件一个类”简化了解决方案的浏览。 此外,如果您有一个使用悲观方法(独占锁)的开发人员和源代码管理工具的大型团队 - 开发人员在处理同一个文件时将遇到困难。

5

只要类是相互关联的,我不会在同一个文件中看到多个类的问题。

如果你有resharper,你可以随时使用导航工具找到任何类。

+0

+1同意,并非所有类都需要处于独立单位。 – James 2009-10-16 08:51:30

+1

+1 Resharper否定导航问题(ctrl T)。 – 2009-10-16 08:53:17

+0

不是每个人都有,或者甚至可以使用Resharper(例如Express版) – 2009-10-16 08:58:17

0

我会说不,我知道的DevExpress讨厌它藏汉(它有一些不好的检测practives)。

,但我有有时,当它的一个非常小的类多数民众赞成basicly只能由文件中的“主”类中使用。 Personaly我认为它有点味道,有一个10K行长的.cs文件或在你的项目中有许多.cs之间的平衡。

1

我想这是根据您的偏好。 我想你会发现大多数在线示例/大多数代码是每个文件一个类,便于管理。

我有时会把2班在一个文件 - 只有当我使用的第二类作为一个实体,它只是作为一个在第一类中使用。

0

我认为它是一种“最佳实践”方法,那么很可能是。但是,这实际上取决于项目。我倾向于将相关代码放到独立的单元,例如:

MyApplication.Interfaces 
MyApplication.Utils 
MyApplication.Controllers 

我真的觉得一个类只有永远值得它自己的单位,如果它变得巨大。但是,如果它达到了这个阶段,你应该开始考虑将一些代码移入辅助类来分离逻辑。

1

我想你问,因为你已经注意到,它被认为是最佳实践。鉴于显而易见的好处(以及这里提到的一些不那么明显的好处),为什么你想要以不同的方式做呢?每个文件在多个类中是否有任何好处?我想不出任何。

+0

你是对的,我一直认为最好的做法是每个文件有一个类,但是如果不是这种情况,我似乎会遇到越来越多的代码。即使是由行业专家编写的代码。 – 2009-10-16 08:51:47

+0

行业专家不一定是维护代码的专家。 – 2009-10-17 15:14:05

+0

这在演示代码等方面并不少见,有时这样更方便。使用演示代码,便利胜过其他考虑因素。 – 2009-10-18 20:14:55

1

通常这是最好的解决方案,每个文件有一个类(文件的命名与包含的类完全相同)。

我只不同从,如果

  • 有很多小枚举 - >我收集这些成一个单一的文件如Enums.cs
  • 有很多(20+)生成的类/接口彼此直接相关 - >将一个文件E.g. Interfaces.cs
  • 有些东西不是应用程序的直接功能部分,而是紧密语义上的一致性(比如你需要的所有内容,通常是一些结构,枚举,常量和一个类) - >以interop类命名的单个文件。
  • 专用内部类 - >留在他们的父类,而不是局部类
0

我会用最就此达成一致。每个文件一个类是理想的。它可以让您更轻松地查看项目中可用的内容,而无需依赖智能感知来发现给定程序集中可用的类型。

我认为唯一一次我对每个文件规则中的一个类进行fudge的时候是我定义了一个自定义的EventArgs类,并且它与从另一个类中触发的事件有关。然后,通常我会在同一个文件中将这些定义与该事件的委托一起定义。我不知道这是一种好的做法,还是出于纯粹的懒惰?

+0

由于'EventHandler '你不需要为事件定义委托' – 2009-10-16 09:06:37

0

如果您在一个非常大的项目上工作,太多的文件会显着减慢构建时间(至少使用C++)。我不认为严格遵守规则是必然的。

0

一类每个文件是我的首选方法,它可以帮助我摆脱任何混乱后来......我倾向于使用了很多,虽然部分类的......

0

只要我不打破1000线障碍,我会填入许多相关的类,这是有道理的。

有时抽象可能只是一个重写的方法。

相关问题