C # Coding Standard - Posizione dell'attributo in relazione a Target

3

Avevo pensato che questo fosse uno dei pochi problemi risolti nello standard / stile di codifica C #; Attributes appare sempre sulla riga sopra la cosa a cui sono applicati a la

[SomeClassAttribute]
class SomeClass
{
   [SomeFieldAttribute]
   bool someField;

   [SomeEnumAttribute]
   SomeEnum
   { 
     SomeValue
   }

   [SomeMethodAttribute]
   void SomeMethod() 
   { 
   }
}

Ma recentemente ho iniziato a vedere Attributes in linea con la cosa a cui sono applicati:

[SomeClassAttribute] class SomeClass
{
   [SomeFieldAttribute] bool someField;

   [SomeEnumAttribute] SomeEnum
   { 
     SomeValue
   }

   [SomeMethodAttribute] void SomeMethod() 
   { 
   }
}

Ad esempio sul sito Web Microsoft e nel FileHelpers progetto open source. È solo pigrizia sulla parte dell'autore del codice di esempio, o qualcosa che le persone effettivamente usano quotidianamente, e in tal caso perché?

    
posta briantyler 16.04.2011 - 13:46
fonte

3 risposte

6

Non puoi inserire l'attributo nella riga sopra se è applicato a un parametro.

es. questo esempio da un libro MVC ASP.NET

public ViewResult List([DefaultValue(1)] int page)
{
    // ... 
}

Forse questo ha portato alcune persone a scegliere di scrivere attributi in linea?

Anche un altro esempio di mapping LINQ a SQL ..

[Column] public string Name { get; set; }
[Column] public string Description { get; set; }
[Column] public decimal Price { get; set; }
[Column] public string Category { get; set; }

L'attributo [Column] sembra quasi un altro modificatore come l'accesso public o il tipo, posso vedere come potrebbe sentirsi comodo scriverlo in linea in quel modo.

    
risposta data 16.04.2011 - 14:41
fonte
6

I due pezzi di codice sono identici. È semplicemente una scelta di stile.

Ho sempre preferito lo stile precedente, quindi continuerò a farlo. Usa la convenzione che è più facile per te e il tuo team.

    
risposta data 16.04.2011 - 13:49
fonte
2

Il primo metodo è preferito: potresti avere diversi attributi e alcuni di essi molto lunghi, ad esempio:

 [DebuggerDisplay("Collection with {Count} elements of {User} user")]
 [Conditional("DEBUG")]
 [Serializable]
 ... some security attributes ...
 ... some application specific attributes ...
 ... some resharper attributes ...

Non ho idea di come scriverli in una riga e mantenere la leggibilità ...

    
risposta data 16.04.2011 - 14:04
fonte

Leggi altre domande sui tag