【问题标题】:Is sa1200 All using directives must be placed inside the namespace (StyleCop) purely cosmetic? [duplicate]sa1200 所有 using 指令都必须放在命名空间(StyleCop)内纯粹是装饰性的吗? [复制]
【发布时间】:2010-11-07 11:49:33
【问题描述】:

可能重复:
Should Usings be inside or outside the namespace

sa1200 所有 using 指令都必须放在命名空间内(StyleCop)

这只是为了代码可读性还是这样做有什么实际好处? 它对 GC 有什么帮助吗?

【问题讨论】:

  • (几乎?)所有 StyleCop 规则都是纯粹的装饰......这就是它的用途。 FxCop 提供功能性建议。

标签: c# stylecop


【解决方案1】:
【解决方案2】:

如果您的项目中有多个命名空间,您可以限制每个命名空间分别使用哪些命名空间。

如果两个不同的命名空间中有相同的类名,这可能会派上用场。一个可能是项目某个部分的默认设置,而另一个可能是另一个项目的默认设置。

是的,他们会为这些规则寻找一些非常边缘的案例。

【讨论】:

  • 但是你不会在一个文件中有多个命名空间,对吗?因为那会违反我目前无法追踪的其他一些规则......
  • SA1403:文件可能仅包含单个命名空间,验证 C# 文档不包含多个命名空间指令。
  • 这种类型的冲突比我想象的更常见。而不仅仅是 System.*。常见的类型名称,如“Document”或“ILogger”,甚至来自不同命名空间但由于引用和本地类型或两个引用类型而在同一程序中使用的类似“Invoice”的名称很容易发生。
【解决方案3】:

没有运行时差异。这纯粹是编译时间(和开发经验)的变化。无论哪种情况,编译后的 IL 文件都是相同的。

【讨论】:

  • 实际上,在极少数情况下,采取这一举措会导致生成的代码发生变化。 blogs.msdn.com/ericlippert/archive/2007/06/25/…
  • Eric:VS2008 没有捕捉到这一点吗?我认为现在提供了编译时警告/错误。我知道这是 2005 年的一个问题……但我认为它现在已经被抓住了。
  • 你将一行代码从一个地方移动到另一个地方,编译器怎么知道旧的方式是“正确的”而新的方式是“错误的”?
  • 我认为它发出了一个警告,表明可能存在歧义。猜不到。
猜你喜欢
  • 2011-02-26
  • 2016-10-28
  • 2011-06-28
  • 2012-09-01
  • 2020-05-20
  • 2011-03-18
  • 2018-02-20
  • 2014-12-25
相关资源
最近更新 更多