安排解决方案文件

时间:2012-01-26 13:41:26

标签: c#

我的C#.NET解决方案文件很乱,我正在努力找到一种让事情井井有条的方法。

我尝试将所有关闭的文件放在我为此目的创建的同一文件夹中。例如,我将接口,抽象类及其所有继承的类放在同一个文件夹中。顺便说一下 - 当我这样做时,我需要写一个指向该文件夹的“using”语句,这样我就可以在其他文件中使用这些类(我猜也是一团糟)。

  1. 是否有一种更干净的优雅方式,而不是我觉得很困惑的文件列表?
  2. (让我们说)打开一个抽象类文件并为从它派生的所有类添加嵌套类是一个好主意吗?
  3. 有没有办法告诉解决方案在我创建的每个类上方自动设置文件夹“using”语句?

4 个答案:

答案 0 :(得分:2)

最佳方式是您的解决方案文件系统结构反映您的程序架构而非您的代码架构

例如:如果您定义了一个抽象类,并且在拥有实现它的实体之后:如果它们构成同一软件架构单元的一部分,则将它们放入相同的“篮子”(解决方案文件夹)中。

在这种情况下,通过查看解决方案树,可以从最顶层的视图中了解您的架构(或多或少)。

有不同的方法可以强制执行架构愿景,理解和理解代码文件系统。例如,如果你使用一些已知的框架,比如NHibernate,或者说({)ASP.NET MVC倾向于调用technolgy称之为名称的东西,那么熟悉的人就是这样的技术可以轻松地在您的架构中找到自己。

例如WPF强制您以某种方式在代码中定义内容,但您还需要以ModelModelView,{{的方式定义byb 1}} ..你将在seprate文件中直观地做。该技术强制您按照它的方式定义文件系统

顺便提一句,你所要求的主题是众所周知的困境/问题,没有解决,因为代码只是字符序列,而不是别的。

祝你好运。

答案 1 :(得分:1)

听起来你真的需要稍微分解一下,但是你正在抵制这一点,因为更多的文件似乎更复杂。这是真的。但是还有一个问题就是文件变得庞大而且难以管理,如果你尝试做嵌套类,那么你最终可能会遇到这种情况。

将代码保存在不同的命名空间中实际上是一件好事 - 这是您遇到文件夹时遇到的“问题”,并且必须在文件顶部添加using语句。命名空间允许您在逻辑上划分代码,甚至偶尔重用一个类名,而不必踩到代码库的其他部分。

您使用的是哪个版本的Visual Studio? Visual Studio的一个鲜为人知的特性是,当您键入类名时它可以automatically create the using directive。这将消除一个痛点。

如果我在你的位置,我会开始寻找合理的位置来将我的代码划分到不同的项目中。你也可以在这里过火,但是很常见:

  • 包含业务逻辑和业务对象的“核心”项目。
  • 您构建的不同用户界面的UI项目,例如网站或Windows窗体应用程序。
  • 处理与数据库的所有交互的数据层项目。您的业​​务逻辑与数据层进行通信,而不是直接与数据库进行通信,这样可以更轻松地对数据库设置进行更改。

随着代码库的增长,像ReSharper这样的工具开始变得非常重要。我在一个代码库上工作,该代码库在解决方案中有大约100万行和10个左右的项目,如果没有ReSharper的go-to-file导航功能,我就无法生存。它允许您点击键盘快捷键并开始键入文件名,并在找到匹配项时跳转到该文件名。这有点像使用Google查找信息而不是尝试为您遇到的每个有趣链接添加书签。一旦我做了这种心理转变,在代码库中导航变得非常容易。

答案 2 :(得分:0)

尝试在同一解决方案中使用多个项目来获取订单。分离Web,实体,数据访问,设置,测试等项目。

如果文件位于同一名称空间中,则不需要using语句。如果您将代码分解为多个项目,则需要使用using语句引用其他项目。

  1. 由你决定。在逻辑上打破事物。在您认为必要的地方使用子文件夹。
  2. 不确定。
  3. 是的,但您需要创建一个模板。在那上搜索tuturorials。

答案 3 :(得分:0)

1)您的解决方案文件夹应与您的命名空间结构相匹配。 Visual Studio设置为以这种方式工作,并将自动创建匹配的命名空间。是的,这需要using用于文件夹中的内容,但这就是它的用途。

所以,是的,在适当的命名空间下将常见的东西组合在一起。

2)是的,子类应该与它们的抽象基类或它的子文件夹存在于同一个名称空间/文件夹中。我不确定你的意思是否都在同一个文件中?如果是这样,我会说一般不会,除非他们非常简单。不同的文件,相同的文件夹。

3)不是我知道的。如果您在使用它时右键单击类名,您可以让Studio自动解析它并添加一个使用(Ctrl +。也可以这样做)