定位枚举类型的最佳位置在哪里?

ace*_*ole 39 enums

我发现通常有一个单一的类型或命名空间,它接受任何特定的枚举作为参数,因此我总是在那里定义那些枚举.最近,我有一个同事大肆宣传这是一个愚蠢的事情,你应该总是在项目的根目录中有一个枚举命名空间,你可以在其中定义每个枚举类型.

定位枚举类型的最佳位置在哪里?

Jon*_*eet 43

为什么将枚举与其他类型区别对待?将它们保存在可能被使用的相同名称空间中 - 并假设它们将被其他类使用,在它们自己的文件中使它们成为顶级类型.

类型我的唯一一种常见的聚集在一起是代表-我有时有Delegates.cs文件与一群在代表越少,使用.NET 3.5和功能/动作,请注意.


Nic*_*ick 8

此外,命名空间用于逻辑分离属于一起的事物.并非所有类都属于同一名称空间,因为它们是类.同样,并非所有枚举都属于同一名称空间,因为它们是枚举.将它们与逻辑上属于的代码放在一起.


Dan*_*fer 5

我通常尝试将所有不同的类型(类、接口和枚举)放在它们自己的文件中,无论它们有多小。它只是让查找和管理它们所在的文件变得更加容易,特别是如果您没有使用 Visual Studio 并且没有可用的“转到定义”功能。我发现几乎每次我在另一个类中放入这样的“简单”类型时,我最终要么稍后添加它,要么以不再有意义的方式重用它有自己的文件。

至于哪个命名空间,它实际上取决于您正在开发的任何设计。通常,我尝试模仿 .NET 框架的约定。


DOK*_*DOK 5

我尝试将与课程相关的所有内容都放在课程中。这不仅包括枚举,还包括常量。我不想去别处搜索包含枚举的文件或类。在包含大量类和文件夹的大型应用程序中,将枚举文件放在哪里并不总是很明显,因此很容易找到。

如果枚举在几个密切相关的类中使用,您可以创建一个基类,以便在那里共享枚举等常见类型。

当然,如果枚举确实是通用的并且被广泛使用,您可能希望为它们创建一个单独的类以及其他通用实用程序。


小智 5

我认为您将枚举和常量放在使用它们或使用它们来控制代码决策最多的类中,然后您使用代码完成来找到它们。这样你就不必记住它们在哪里,它们与类相关联。例如,如果我有一个 ColoredBox 类,那么我就不必考虑它们在哪里。它们将成为 ColoredBox 的一部分。ColoredBox.Colors.Red、ColoredBox.Colors.Blue 等。我认为枚举和常量是该类的属性或描述。如果它被多个类使用并且没有一个类占主导地位,那么拥有一个枚举类或常量类是合适的。这遵循封装规则。将属性与不同的类隔离。如果您决定更改 Cirle 对象中红色的 RGB 但您不这样做怎么办 不想更改 ColoredBox 对象的红色?封装它们的属性可以实现这一点。