导入语句的C#位置,使得StyleCop感到高兴

时间:2011-02-22 15:06:00

标签: c# coding-style using stylecop

我是StyleCop的忠实粉丝,它让我的生活更轻松。其他一些人都想到了很好的规则,我很乐意通过启用StyleCop来关注它们。最近我一直在搞乱Coded Ui的可扩展性,并且发现了这篇文章:

http://blogs.msdn.com/b/gautamg/archive/2010/01/05/2-hello-world-extension-for-coded-ui-test.aspx

下面的示例代码使StyleCop不满意,因为using语句在命名空间之外。但是,我只能移动两个System*包 - 第三个是定义一个程序集属性所必需的,我不能将assembly:放在命名空间内。

是否有一种干净的方法来重新组织此代码?

using System;
using System.Diagnostics;
using Microsoft.VisualStudio.TestTools.UITest.Common;
using Microsoft.VisualStudio.TestTools.UITest.Extension;

// Attribute to denote that this assembly has UITest extensions.
[assembly: UITestExtensionPackageAttribute("HelloWorldPackage",
           typeof(UITestHelloWorldPackage.HelloWorldPackage))]

namespace UITestHelloWorldPackage
{
    internal class HelloWorldPackage : UITestExtensionPackage
    {
        public override object GetService(Type serviceType)
        {
            Trace.WriteLine("Hello, World");
            return null;
        }
....

2 个答案:

答案 0 :(得分:5)

恕我直言,将命令放在命名空间内的规则是无用的,并且使代码难以阅读。

答案 1 :(得分:5)

您无法将[assembly: UITestExtensionPackageAttribute()]属性移动到Properties \ AssemblyInfo.cs文件中吗?我猜你引用的文章中只有[assembly:]属性,只是为了将示例保存在一个代码块中。

我同意Daniel的观点 - 在命名空间中使用using语句会使您的代码难以阅读。

我建议将该属性移动到AssemblyInfo.cs文件中,并将您的使用保存在类文件的顶部。这似乎很标准。

希望这有帮助!