2008-09-15 28 views
0

随着我在我的解决方案中获得越来越多的名称空间,我的文件顶部的使用语句列表变得越来越长。在我的单元测试中,尤其如此,对于每个可能调用的组件,我需要包括接口的使用,IoC容器和具体类型。有没有什么办法摆脱在我的.cs文件的顶部使用长列表?

随着我的集成测试文件中17条线的使用率上升,它变得非常混乱。有谁知道是否有一种方法来为我的基地使用语句定义一个宏?其他解决方案?

回答

4

有些人喜欢躲在usings在#region。否则,我认为你运气不好。除非你想把命名空间放在你的所有参照物上。

1

ReSharper的 - 附加在Visual Studio中 - 有一个特点,剥离unsued使用的从一个文件,但我不知道什么都颇为你描述。

+0

VS2008确实太右点击 - >组织usings->删除未使用的 – 2008-09-15 11:46:45

+0

啊,好。尚未使用2008年。 – Rikalous 2008-09-15 12:31:21

1

有谁知道是否有一种方法来 使用 语句为我的基地定义了一个宏?

您的意思是说,您经常使用的名称空间会自动添加到每个新类中?如果是的话,Resharper也可以这样做。另外,它还有一个功能,可以将代码清理到代码清理区域。 Resharper可能是要走的路(你可能不会后悔,因为我可以从我自己的经验中说出)。

6

我知道我不应该大声说出来,但是,可能会重新考虑你的设计。

17在1个文件中使用=大量耦合(在命名空间级别上)。

+0

我想他提到他主要是在谈论测试。我不认为你可以避免耦合你的测试! – 2008-09-15 12:17:41

2

受不了Resharper自己。但我也不能忍受使用陈述凌乱。我使用VS的Power Commands加载项,它有一个方便的'删除和排序'使用语句命令(以及其他好东西)。

1

VS2008增加了“组织Usings”上下文菜单,其中有一个排序,删除,“删除和排序”选项,会做你每个文件想要什么。 Visual Studio Power Commands外接程序在解决方案资源管理器中为项目和解决方案添加了一个上下文菜单,该项目和解决方案分别是项目中的所有文件和解决方案中的所有项目的“移除和排序”。

0

在VS2008中,你可以右键点击该文件CS和选择“整理Usings”。它将剥离未使用的使用并为您分类。除此之外,我只会使用#region。此外,CTRL + M + O将在设计时折叠所有区域功能等。我使用这个快捷方式很多!

1

如果要更改创建新文件时完成的默认使用语句,请查看C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033目录。它包含一堆压缩文件,您可以修改它以更改代码文件的模板(显然会向上移动目录结构以更改其他语言或其他类型的文件)。

更多信息请参见here

2

这里有四个可能的问题;

代码中的命名空间将您的类划分得太细。例如,如果您有,则为;

using MyCompany.Drawing.Vector.Points; 
using MyCompany.Drawing.Vector.Shapes; 
using MyCompany.Drawing.Vector.Transformations; 

考虑将它们折叠到单个MyCompany.Drawing.Vector命名空间。你可能没有分得太多。 Visual Studio Code Analysis/FxCop有一个规则,检查命名空间中的类的数量。太少了,它会警告你。

您正在将太多测试放入同一班。如果您在同一个类中引用System.Data,和System.IO,请考虑编写更多的原子测试 - 一些访问数据库,一些访问数据库,一些访问文件系统。然后将每种类型分为三个测试类。

您正在编写测试过多。如果您引用了很多名称空间,那么您的测试可能会将太多功能耦合在一起。这种耦合通常可能会有问题,所以尝试将大范围的功能分解为更小的部分,然后在单独的文件中测试这些功能。

许多是多余的。它们是全部使用,还是只是从其他文件复制粘贴。右键单击代码编辑器并从“组织使用”选项中选择以删除不使用的语句。

1

它可能有助于使用别名。不知道这是值得的,但不是:

using System.Web.UI; 
using System.Web.Mail; 
using System.Web.Security; 
... Control ... 
... MailMessage ... 
... Roles ... 

你可以使用:

using W = System.Web; 
... W.UI.Control ... 
... W.Mail.MailMessage ... 
... W.Security.Rolse ... 
相关问题