在VS项目中删除未使用的using语句有什么好处?


21

在VS项目中删除未使用的using语句是否有任何好处(例如可以使用Resharper完成),还是在构建/部署时VS自动进行处理?


1
印象中您所询问的removing unused references(DLL)和所有答案都是关于的removing unused using statements
的Răzvan弗拉菲乌斯熊猫

@RăzvanPanda:不,它正在使用语句;如果您可以使用R#进行后者操作,我将不得不屈服-那也将是令人愉快的低温。
B. Clay Shannon

正确,纠正措辞以符合其含义。
的Răzvan弗拉菲乌斯熊猫

1
您可以使用最新的R#删除未使用的DLL引用,但请务必注意动态DLL引用,否则在运行时可能会中断。
的Răzvan弗拉菲乌斯熊猫

Answers:


23

如果这就是您的意思,则没有任何性能上的好处。

装配体中的所有参考均完全合格。编译器仅使用您在代码中提供的引用来完全限定标识符,因此,源代码中未使用的引用的唯一影响是可读性略有下降(为什么在此使用此引用?),并且编译时间却微不足道。

换句话说,无论是否删除未使用的引用,生成的IL都是完全相同的。


删除未使用的Uses 可能有间接的好处。如果这样做又允许从解决方案中删除对外部DLL的一个或多个引用,则可能会有益于应用程序的部署大小和/或启动时间。

1
如果删除使用方法,则生成的IL不会更改,因此我看不到会有什么影响。
罗伯特·哈维

正确:如果添加未使用的usings或DLL引用(Reference IncludeMSBuild文件元素,/reference:CSC参数),则IL不会更改。我想到了:using从Web应用程序项目中删除未使用的。这些是强制包含一堆DLL引用的唯一代码行,因此现在将其删除。如您所说,构建速度更快-如果引用是UNC路径,则构建速度更快(CSC检查所有引用路径)。轻而易举的胜利2:CI的速度(脚本捕获所有引用的DLL)随着复制的文件减少而得以提高,例如,从源控制服务器复制到构建服务器再将服务器发布到应用程序服务器。

较短的代码是更具可读性的代码。少即是多-这就是好处,因此值得这样做。
niico

24

是的-我可以想到两个主要好处:

  1. 除了其主要功能目的(即减少代码冗长程度)之外,代码文件顶部的“使用”语句列表还可以告诉未来的读者(尤其是没有Resharper的读者)哪些名称空间与(或至少)该代码文件相关。如果您主动修剪此列表,它可以充当更好的信号机制。
  2. 删除未使用的名称空间将在您键入文本时减少文本编辑器中自动完成候选的数量。如果您完全依赖自动填充列表,这将使您“直截了当”,甚至可能提高键入速度,因为您应该可以更快地找到所需的自动填充候选对象。

1
啊,很好,尤其是#2!
B. Clay Shannon

0

删除未使用的代码仅是额外的负担,并且很难衡量所获得的效率。

  • 删除未使用的代码,减少了编译时间,我正在一个项目上工作,这需要15到20分钟的时间,其中有大量的未使用代码。消除未使用的代码可使编译时间减少至〜7分钟。当团队中有许多开发人员时,这会有所不同,从而节省了每个人快速构建和测试的时间。

  • 如果您已使构建和单元测试自动化,那么现在已删除了不需要的单元测试。再次减少了运行单元测试的时间。只是在您的持续构建管理过程中提高了效率。

    • 未使用的代码会导致二进制文件占用更多空间。具有较小的代码占用空间将减少最初加载/启动所花费的时间。尽管收益可能非常微薄和主观。

4
问题不是关于未使用的代码,而是关于未使用的引用
gnat 2014年

...请参阅如何回答:“ 仔细阅读问题。具体是什么问题要问?请确保您的回答提供了这一建议-或可行的替代方案...”
gnat
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.