it-swarm.it

Come si nominano le variabili private in C #?

Qual è la migliore pratica, le convenzioni di denominazione più comunemente accettate per le variabili private in C #?

  1. private int myInteger;
  2. private int MyInteger;
  3. private int mMyInteger;
  4. private int _myInteger;
  5. private int _MyInteger;
  6. Misteriosa altra opzione

Quale usi e perché? (La mia azienda è abbastanza nuova in C # e vorrei scegliere il metodo più "accettato dal settore" per cercare di entrare nel nostro standard di codifica.)

25
Vaccano

Le linee guida per la progettazione della classe MSDN http://msdn.Microsoft.com/en-us/library/ta31s3bc.aspx consiglia l'opzione 1 - myInteger.

Ho sempre usato questo stile. Non mi piace il personaggio _.

44
btlog

Uso l'opzione n. 4 sopra:

private int _myInteger;

Mi piace avere qualche indicazione di scopo nei nomi delle mie variabili e il carattere di sottolineatura è sufficiente a tale scopo. È anche abbastanza facile da leggere.

25
Matt Dillard

Uso il seguente schema di denominazione:

  • 1st (myInteger) per variabili con ambito locale
  • 2nd (MyInteger) per proprietà pubbliche
  • 4th (_myInteger) per variabili private
16
Zafer

Penso che l'opzione 4 sia davvero l'opzione più leggibile. Ti aiuta a dover fare questo:

public Person(string name, int age) 
{
    this.name = name;
    this.age = age;
}

Rende inoltre più evidenti tutti i membri privati. Nel seguente esempio, da dove diavolo proviene age? Senza il qualificatore this è più difficile dirlo.

private void Method()
{
    var x = 2;
    var y = age + x;
}

Questo è molto più facile da capire:

private void Method()
{
    var x = 2;
    var y = _age + x;
}
14
ChaosPandion

Prima di tutto, PascalCasing è comunemente riservato per proprietà pubbliche, contro, metodi, ecc. Della classe. Quindi salterei 2 e 5.

In secondo luogo, la notazione ungherese è scoraggiata nel mondo .NET, quindi (penso,) 3 è uscito. Supponendo che sia quello che sta succedendo con 3.

Ciò lascia CamelCasing e _camelCasing. In genere uso _camelCasing per le variabili di classe e semplicemente il vecchio camelCasing per le variabili associate a un metodo o più ristretto. L'intelaiatura del cammello è lo standard accettato utilizzato per argomenti di metodo, nomi di variabili protetti/privati ​​e variabili all'interno di un metodo o ambito più ristretto.

Mi piace anche anteporre al carattere di sottolineatura in modo che le mie variabili private siano raggruppate nel mio intellisenso. Tuttavia, lo faccio solo per variabili con ambito in un tipo. Le variabili dichiarate all'interno di un metodo o di un ambito più ristretto lascio il carattere di sottolineatura disattivato. Rende facile separarli e tenere insieme le variabili meno utilizzate.

10
Ripped Off

private int integer

Se vieni confuso tra le variabili membro e locali in un ambito del metodo, probabilmente dovrai rifattorizzare.

4
Ryan Roberts

Faccio l'opzione n. 4 perché è quello che assomiglia a SSCLI, ma sinceramente non mi interessa molto la denominazione della variabile privata. Il pubblico è una storia diversa.

A proposito, hai dimenticato m_MyInteger

2
Conrad Frix

Non lo definirei "mio" per niente!

Ma direi

class C
{
     int VariableName { get; set; }
}

abbastanza spesso questo è più bello che avere variabili esplicite. Se avessi una variabile privata esplicita la chiamerei int _variableName;

2
CJBrew

Credo che il modo migliore per farlo (in C # /. Net comunque) sia una combinazione di 2 e 6:

private int MyInteger { get; set; }

Non c'è teoricamente nessuna variabile qui, ma sembra e si comporta come una variabile di istanza privata. Se dobbiamo aggiungere una logica di business a quel valore (è un valore completamente interno, quindi possiamo fare tutto ciò che vogliamo dopo tutto), allora è già "proprietà" per noi. Una calda tazza fumante di vittoria!

2
Task

con il trattino basso.

Bill Wagner spiega perché in C # efficace . Ma non nominerei mai un numero intero mio Numero intero , meglio qualcosa come _age o _length. Includere TypeName nel nome dell'istanza è una pratica orribile. I nomi devono essere autoesplicativi e poiché C # è di tipo sicuro, è possibile trovarli sempre.

1
Caspar Kleijne

In C++ tendo a usare _ poiché cambio molto editor, il che non mi permette di vedere se è privato.

Per C # tendo a lasciare _ _ visto che Visual Studio mi permette di vedere se è privato.

Tendo ad usare il modo Camel Case per farlo.

1
Tamara Wijsman

Devi fare un esempio più specifico, ma:

private int count, private int badFileCount, private static readonly int ReconnectAttemptsLimit

A proposito, ottieni tutto questo GRATUITO quando installi e inizi a utilizzare l'ultimo e il più grande MSFT Stylecop.

1
Job

Io uso 4 (private int _myInteger;) perché:

private int myInteger;

Questo è il modo in cui nomina le mie variabili locali.

private int MyInteger;

È così che chiamo costanti.

private int mMyInteger;

Questo non è in stile C #.

private int _MyInteger;

Sembra strano.

1

Ho un nome ReSharper per le mie variabili, non solo per le mie ma anche per tutti gli altri. C'è molta consistenza nel progetto.

0
Sevki

Vado dall'opzione 5: private int _MyFoo

Tuttavia, non vedo alcun vantaggio competitivo reale rispetto a _myFoo.

0
mafu

IDesign C # Coding Standard di Juval Lowy è piuttosto popolare. Questo standard raccomanda di aggiungere un prefisso alle variabili dei membri privati ​​con "m_" (Opzione 6). Questo è ciò che facciamo nel nostro team.

private int m_myInteger;

Opzione 4 (_myInteger) è una variazione accettabile di questo standard.

Non mi è piaciuta la raccomandazione MSDN (myInteger), perché rende difficile distinguere un membro privato da una variabile locale. La loro raccomandazione, ovviamente, risolve questo problema qualificando i membri privati ​​con this, che mi sembra ridondante.

0
azheglov

Usa camelCasing per variabili private come myInteger

Considera un precedente _ se la variabile è un backup per una proprietà per ridurre le confusioni-
Variabile _myProperty per la proprietà MyProperty

0
Gulshan