2013-03-13 56 views
14

我和我们公司的teamlead \ architect讨论过这个话题。我们应该把类,枚举和其他实体放到他们自己的文件中吗?

他认为,如果“通过逻辑连接的实体”放在一个CSV文件中,那么理解大型项目会更容易。

我引述:

  1. “逻辑和接口和类可以在一个地方可以看出的整体结构,这是不能被驳倒一个参数要看到的一样。但有一些文件需要使用工具,类图,R#进行导航等。“

  2. “继可怜的理论我可能会尖叫说的分隔文件的军队是很酷,但是当涉及到更改现有的代码,特别是如果你没有这个代码的一个作家,这是非常困难的要了解大量零散文件,所以,在论坛上,你可以写“一个enum-一个文件”,但在实践中这种方法不应该被用来“

  3. ” ......至于代码分离现在不是编辑同一个文件的问题,合并不是问题。“

我听到和读到的是我们要创建每个枚举类一个的.cs文件等很多次,这是最好的做法。

但我无法说服他。他说他不相信像Jon Skeet这样的知名程序员。顺便说说,这里是Skeet对此主题的看法Where is the best place to locate enum types?

你觉得呢?有真正的问题吗?或者这是一个品味问题,应该由组织的编码标准来规范?

+0

我希望你现在已经跨越了他并成为团队的领导者/建筑师。 – bubbleking 2016-05-03 20:11:56

+0

@bubbleking不,我刚刚离开那个工作两个月前))) – EngineerSpock 2016-05-05 09:32:40

回答

7

在我看来:

所需要更大的逻辑类中可以留在其文件小枚举和类。
但是,如果在该范围之外使用较小的类和枚举,则应该分别使用它们(尽管如果逻辑链接它们本身可能在同一个文件中)。
所以我同意他的逻辑耦合。

说了这么多,我必须说有其他的选择,你可以在一个项目中创建逻辑文件夹,以保存来自同一逻辑环境或连接的类。
今天的IDE使您可以通过Go-To功能轻松访问和移动整个解决方案,因此找到代码不是问题。

将逻辑组件保持在一起(只要它们紧密耦合)确实在缩放时具有很大的优势。随着项目越来越大,它往往会变得越来越混乱,而这正是他试图避免的。

顺便说一句,如果你看过飞碟双向的观点观察,你会发现:

假设他们会通过其他类使用,使他们的顶级类型在他们自己的文件。

+2

逻辑文件夹==命名空间,如果你保持一个很好的习惯,每个命名空间级别都在单独的文件夹中。 – 2013-03-13 09:41:44

+0

正确的和实际的文件夹确实有助于在解决方案/项目范围中对此进行可视化 – 2013-03-13 09:43:58

1

我认为你的“teamlead \ architect”意见主要是基于命名空间的不佳用法。每次我听到开发人员的这种说法都是因为几乎完全缺乏命名空间的使用(如果你添加了很多文件,它变得非常混乱)

2

这是非常值得关注的问题,所以倒不如张贴在这里:

https://codereview.stackexchange.com/

但是,通常你应该将所有类型的定义,在他们自己的文件,也有一些例外:

  • 用来提供的合同守则合同类抽象基类或接口在逻辑上属于该类。

  • 这是一个枚举,它是只有用作参数,类中的属性或返回值也属于该类(但不是嵌套在该类中)。

可能还有其他一些例外情况,但通常每种类型都应该放入单独的文件中。

1

我不同意“teamlead/architect”在这里提出的许多观点。

就像很多关于代码的事情一样,这是一个意见问题。

就个人而言,我认为最好是创建一个.cs文件,每个枚举,类等等。通常如果有一个与枚举关系最密切的类,并且我将它们放在同一个文件中。

我接受公司可以有自己的编码标准,但是这里建议的标准是错误的,因为它违背了我认为很好的做法。

1

你和他可以看看互联网上的大量复杂的开源项目。看看github,codeplex和类似的地方。

例如看看MVC的源代码。如果每个文件对于Microsoft来说足够好,并且像MVC这样复杂的项目,我认为这对你们来说也是一个很好的机会。

就我个人而言,我使用类/接口每个文件的方法(除了在特定情况下,像有一点枚举,但主观),我没有看到任何问题。

2

有趣的问题,这是我的承担。

您必须区分逻辑分组(名称空间)和物理分组(文件/项目)。

在任何情况下,枚举都应该放在它智能所属的逻辑名称空间中,而不是放在只包含枚举的名称空间中,或者甚至不在名称空间名称中指定枚举。有一个'枚举'命名空间是没有意义的,因为你会混淆概念,并且不指定它所属的域。

如果只有一种类型的类使用枚举,那么也可以将它放在类本身中。这样,显然它属于那个特定的类,因此它在相同的代码文件中。如果枚举更像是一个用于多个类的通用枚举,然后将它分开放置在它自己的代码文件中。

所以我不同意你的团队领导:如果你把它放在同一个文件中,把它作为类的一部分,因为如果你把它放在同一个文件中,那就是你实际说的,否则就把它放在它自己的文件中代码文件。无论如何,我认为这是一个更加一致的用法。

相关问题