假设我有一个需要使用二叉搜索树数据结构的Visual Studio项目。由于.NET没有内置的BST数据结构,我必须自己添加类(例如来自this article)。这将涉及几个类:Node,NodeList,BinaryTree等....所以我的问题是将所有这些类添加到一个.cs文件,即嵌套它们,或者每个类应该是它自己的单独文件会更好吗?如果它们全部放在一个文件中,它似乎更清晰,可能更容易重用这些类,不是吗?
我只是想了解组织和设计项目的最佳实践。你可以指出我的任何建议或指示将不胜感激。
答案 0 :(得分:3)
使用二叉树的最简单方法是下载并引用C5 Collections Library。为什么重新发明轮子?
话虽这么说,一般规则是1个小部件--class / enum / struct / whatever - 每个源文件。一个好的做法(YMMV)是[通常]让文件系统层次结构反映命名空间层次结构,并且应该命名程序集以反映它们包含的命名空间。
答案 1 :(得分:2)
我建议每种类型使用一个文件。限制文件数量是不经济的,每种类型一个文件确实有助于在解决方案中找到类型。
通常,文件被组织在文件夹中以帮助组织级别(文件夹通常沿命名空间行命名,因为它们提供了类型的自然分组),尽管并非总是如此。
答案 2 :(得分:1)
我建议使用一些内置结构。我怀疑你真的需要二叉树。
如果您编写自己的类,那么每个类通常应该在自己的文件中。每当您不需要在外部使用它们时,请使用内部类。 (将它们设为私有。)内部类通常在与外部类相同的文件中定义。
答案 3 :(得分:1)
与Jeff Yates一样,我会为每种类型使用一个文件。 Java强制执行,而不是.NET - 但这似乎是采用组织良好的解决方案的方法。
另外,我会将所有与BST相关的文件放在一个单独的项目中放在同一个解决方案中。如果我理解正确,你的应用程序不是关于 BST,它只是使用它们,对吗?如果是这种情况,那么分开的项目就是这里的方式。
并制作名称明确且名称明确的命名空间。与BST相关文件的MyApplication.Bst
和前端的MyApplication.UI
类似。
答案 4 :(得分:0)
我会在名为BinarySearch的项目下创建一个文件夹并将它们放在那里。
答案 5 :(得分:0)
我认为将多个类放入一个文件通常会使项目变得笨拙。没有性能优势。如果有大量可以分组的类,请使用目录结构。
答案 6 :(得分:0)
这个问题与stackoverflow中的其他问题看起来很像:
标准做法是每个文件有一个类,一个值得注意的例外是枚举,代表和其他。