6

在过去的几个月里,我一直在使用 ReSharper,除了广告,没有它我就无法看到自己的编码。由于我喜欢生活在流血的“到底出了什么问题”的边缘,我决定用最新的 ReSharper 4.5 nightly builds 试试我的运气。这一切都很好。

但是,我注意到 using 指令分组格式发生了变化,我想知道哪个更接近一般标准:

[老的]

#region Using directives
using System.X;
using System.Y;
using System.Z;
using System.A;
#region
namespace X { ... }

[新的]

namespace X {
#region Using directives
using System.X;
using System.Y;
using System.Z;
using System.A;
#region
...
}

除了延迟加载引用之外,它还有什么特殊用途吗?(一直在阅读 Scott Hanselman 对此的看法@http ://www.hanselman.com/blog/BackToBasicsDoNamespaceUsingDirectivesAffectAssemblyLoading.aspx

谢谢;

4

3 回答 3

7

正如 Scott 在他的帖子中继续发现的那样,这两种情况之间没有运行时差异。因此,它不能达到延迟加载引用的目的。

如果你把Scott博客的评论一直读到最后,你还会看到把这个谣言传给Scott(Mike Brown)的开发者说他只是听说过这个,没有亲自测试过。

也就是说,如果您在命名空间中为类型设置别名,并且您在命名空间中定义了另一个具有相同名称的类型,那么您放置 using 指令的位置可能会产生差异,从而导致编译器错误但这当然不是运行时差异。

最后,我相信 MS 编码指南说要像 ReSharper 4.5 那样做。但是盲目地遵循这条规则是愚蠢的,“因为 MS 这么说”,因为

  1. 事实证明,它没有任何好处。
  2. 您的团队(或您的)通常的编码风格很可能会有所不同。
于 2008-12-30T06:01:11.020 回答
1

好吧,通常是主观的。:) 但对我来说,通常是“旧”的方式。

于 2008-12-30T06:11:40.610 回答
0

哦,我的坏。当我搜索它时,我没有看到这个问题。我知道这样做很愚蠢,因为 MS 这么说,但总的来说,“通常”的方法是什么?

众所周知,我经常使用 ReSharper 的代码清理,所以老实说,我只是想知道。

于 2008-12-30T06:05:02.853 回答