由于什么原因,我应该在C#中保持“使用”部分的整洁?


11

重构代码后,我将IDE转到C#类的using部分,并清除了未使用的名称空间重复的名称空间,并对它们进行了排序。

我的一对(配对编程)问我原因。我不知道为什么要这么做。我这样做是出于保持我的所有代码整洁的习惯。我的意思是,我告诉他,一般而言,拥有简洁的代码是一个好主意,但是当然,这并不是一个很好的理由,因为我什至不花时间在任何C#代码页的using部分中。

由于多次将类或枚举(或通常的类型)从一个名称空间移动到另一个名称空间,这会在代码中添加新的using语句(通过手动在代码窗口中向上并自己编写using语句,或通过编辑器使用Alt+ Ctrl+ F10组合),并且由于这些新的using语句将添加到using节的末尾,这使得它们不会按字母顺序排序,并且由于编译器从不抱怨这些问题中的任何一个,因此我们为什么要关心这样做节整洁?我们可能有什么原因?


5
这已经被要求回答对堆栈溢出- stackoverflow.com/questions/4163320/unused-using-statements(和边栏上的两个相连的问题) -基本上没有理由未使用的usings担心
ChrisF

很好的参考@ChrisF,我想我的答案在那里。也许您应该与那个人一起提问,或者做类似的事情。:)
Saeed Neamati 2012年

也请检查此内容:stackoverflow.com/a/136646/333306

Answers:


22

无论using您有多少个指令,性能都没有区别。

但是我认为保持它们清洁很有意义,原因有两个:

  1. 如果查看usings,则可以看到文件具有哪些依赖性。这可以帮助您弄清文件中的类型。如果执行此操作,则按using特定顺序排列可以帮助您更快地查看。
  2. 如果usings 过多,则可能表示关注点分离差,文件中的类型作用太大。

这两个都不是很重要,因此您不必为此担心太多。但就我个人而言,我认为值得保持using清洁。


8

我在using语句中进行清理的主要原因是:

  • 使用的语句越多,命名冲突的可能性就越大,这意味着您必须在代码中包括名称空间的各个部分,以避免产生歧义。
  • IntelliSense会根据using语句中的所有程序集进行过滤。因此,如果您从不必要的语句中清除它,则将通过帮助提高IntelliSense的准确性来帮助自己。

最重要的是,我同意其他答案,因为它提高了可读性,并使您更容易了解类中的类型。


我不明白为什么这票数不高。命名空间冲突是一个合理的问题。
RubberDuck

7

“完美的实现不是在没有东西可添加的情况下,而是在没有东西可取的情况下” –安东尼·圣艾修伯里

只要您可以删除不必要的内容并且不增加理解,就应该这样做(可读性值得额外的代码)。


伟大的格言。我喜欢这个主意。+1;)
Saeed Neamati 2012年

4

它只是消除信号中的噪声。更少的噪声意味着更容易接收信号,即理解代码的意图。

作为一种噪音产生器,它虽然很小。


2
  • 它提高了代码的可读性。
  • 通常,如果您只有很少的using语句,那么遵循该准则几乎没有意义

  • 将using语句分成多个部分更有意义。

例如:

    using System.Web;

    using MyPlatform.FooX;        
    using MyPlatform.FooY;

    using MyFramework.Helpers;        
    using MyFramework.Extentions;

如果查看该类,那么我可以立即看到给定的类正在使用System.Web程序集以及我们的平台和框架。这使我对其依赖关系和复杂性有了一个大概的了解。

然后,您可以进一步执行此操作并对语句进行排序,但是我认为这会使使用语句的可读性降低,因此我不建议这样做。

using MyFramework.Extentions;
using MyFramework.Helpers;

using System.Web;

using MyPlatform.FooX;        
using MyPlatform.FooY;
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.