2011-02-22 10 views
5

Soy un gran fanático de StyleCop, me hace la vida más fácil. Muchas otras personas han pensado en buenas reglas y las seguiré encantando habilitando StyleCop. Recientemente he estado jugando con Coded Ui extensibilidad, y me encontré con este artículo:C# ubicación de las declaraciones de importación, lo que hace que StyleCop sea feliz

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

El código de ejemplo siguiente hace StyleCop infeliz porque los using declaraciones están fuera del espacio de nombres. Sin embargo, puedo mover solo los dos paquetes System*; el tercero es necesario para definir un atributo de ensamblaje, y no puedo lanzar assembly: dentro de un espacio de nombres.

¿Existe alguna forma clara de reorganizar este código?

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; 
     } 
.... 

Respuesta

5

en mi humilde opinión, la regla para poner usings dentro del espacio de nombres es inútil y hace que el código sea difícil de leer.

+1

Definitivamente. Siempre elimino esta regla de la configuración de StyleCop. –

+0

Hm ... Veo su punto, pero el debe haber tenido algún tipo de razón para esa regla. –

+1

Si no puede pensar en ese motivo, la regla no se aplica a usted. Y realmente: no todas las reglas tienen sentido y debes verificar por ti mismo cuáles tienen sentido y cuáles no. –

5

¿No puede mover su atributo [assembly: UITestExtensionPackageAttribute()] a su archivo Properties \ AssemblyInfo.cs? Supongo que el artículo al que hizo referencia tenía el atributo [assembly:] allí solo para mantener el ejemplo en un solo bloque de código.

Estoy de acuerdo con Daniel: tener using declaraciones dentro de espacios de nombres hace que tu código sea más difícil de leer.

Recomiendo mover el atributo a su archivo AssemblyInfo.cs y mantener sus usos en la parte superior de su archivo de clase. Eso parece bastante estándar.

Espero que esto ayude!

Cuestiones relacionadas