在哪里“定位” C# 结构? / 如何在项目中组织结构

Posted

技术标签:

【中文标题】在哪里“定位” C# 结构? / 如何在项目中组织结构【英文标题】:Where to 'locate' C# structs? / how to organize structs within a project 【发布时间】:2011-09-19 22:48:12 【问题描述】:

我试图了解在项目中放置 C# 和/或 C++ 结构的约定。在它自己的源文件中?如果是的话,我应该养成遵循的习惯吗?

在第一年,并没有真正讨论约定,但一般来说,我们将结构“固定”在使用或“感觉”最相关的任何地方......

在我的特殊情况下,我有几个由值类型显式组成的结构,它们将在整个特定应用程序及其类中传递,所以我不能肯定地说任何一个特定的“区域”都可以声称任何形式的所有权。

【问题讨论】:

你真的需要那么多 C# 结构吗?结构在 C# 中并不常见。 惯例因公司而异,因此非常主观。通常,一个结构应该有它自己的代码文件,排列在一个合理的文件夹层次结构中。除非结构是特定类的内部结构;然后在使用它的类中将该结构作为私有结构。 @R. Martinho:结构的数量正好是两个,只包含基本的值类型。这些结构不需要类的任何功能,而且这种方法似乎遵循惯例。我当然从根本上同意你所说的! 【参考方案1】:

仅与单个类相关的小结构通常与该类放在同一个文件中。同样,在单个类中使用的小型简单类通常放在同一个文件中。这表明该项目与特定类别相关,并且是将该项目与该类别分组的方法。

任何既不简单(只有少数值)也不特定于单个类的结构都应该在其自己的文件中。

【讨论】:

任何不简单的结构都应该是一个类。应该避免添加所有这些陷阱以获取微不足道或负面的好处(取决于您如何查看堆栈/堆的使用情况)。【参考方案2】:

在 C++ 中,如果结构由某个类或接口等“拥有”,那么我更愿意将其声明为拥有它的内部类型。如果结构是许多不同类使用的通用协议,那么我将它放在自己的 .h 文件中。如果该结构是一组相关的小型结构之一,那么我为这些东西创建一个命名空间,并在提供该命名空间的单个 .h 文件中声明所有结构。

在 C# 中,我可能会做与 C++ 中相同的操作。

【讨论】:

【参考方案3】:

您应该能够为每个结构或每组相关结构创建一个单独的文件(我建议每个结构一个,但有时这会变得乏味 - 如果您将它们分组,请务必仔细命名)。

如果项目足够大,可以拥有您所称的“区域”,那么为适当描述它们的结构引入一个或多个命名空间可能是明智之举。这将防止命名冲突,并为您的代码使用客户提供一种记住位置的方法。有时必须对名称进行限定似乎很痛苦,但它在大型项目中很重要并且最终会有所帮助。

最后,大多数大型项目在高级目录或定义其消息接口的位置都有一个 Common 文件夹。这很重要,因此每个人都可以认识到 location 保存的数据结构应该被所有人使用,以保持清晰、一致的界面,以避免需要大量耗时且昂贵的转换代码(并且通常最终也会被复制! )。

【讨论】:

【参考方案4】:

如果该结构在多个类中使用,我将其放在自己的文件中。 Stylecop 不会抱怨任何一种方式。并且 reshaper 具有重构功能,可以将结构移动到自己的文件中。

【讨论】:

以上是关于在哪里“定位” C# 结构? / 如何在项目中组织结构的主要内容,如果未能解决你的问题,请参考以下文章

怎么用C#和mapinfo开发车辆定位系统?

如何组织项目的目录结构

C# 中的静态结构存储在哪里?

Xcode如何快速的根据错误日志定位到相应的

在word文档中写项目组织结构

如何在 Django 项目/应用程序中组织和加载 CSS?