C # расположение операторов импорта, что делает StyleCop счастливым - PullRequest
5 голосов
/ 22 февраля 2011

Я большой поклонник 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 ]

5 голосов
/ 22 февраля 2011

Не можете ли вы переместить свой атрибут [assembly: UITestExtensionPackageAttribute()] в файл Properties \ AssemblyInfo.cs? Я предполагаю, что статья, на которую вы ссылались, содержала атрибут [assembly:], чтобы сохранить пример в одном блоке кода.

Я согласен с Дэниелом - наличие using операторов в пространствах имен затрудняет чтение вашего кода.

Я бы порекомендовал перенести атрибут в ваш файл AssemblyInfo.cs и сохранить ваши значения в верхней части вашего файла классов. Это кажется довольно стандартным.

Надеюсь, это поможет!

5 голосов
/ 22 февраля 2011

ИМХО, правило помещения значений в пространство имен бесполезно и затрудняет чтение кода.

...