it-swarm.dev

Wie benennen Sie Ihre privaten Variablen in C #?

Was ist die beste Vorgehensweise, die am häufigsten akzeptierten Namenskonventionen für private Variablen in C #?

  1. private int myInteger;
  2. private int MyInteger;
  3. private int mMyInteger;
  4. private int _myInteger;
  5. private int _MyInteger;
  6. Geheimnisvolle andere Option

Welches benutzt du und warum? (Mein Unternehmen ist ziemlich neu in C # und ich möchte die branchenweit am meisten akzeptierte Methode auswählen, um zu versuchen, in unseren Codierungsstandard einzusteigen.)

25
Vaccano

Die Entwurfsrichtlinien für MSDN-Klassen http://msdn.Microsoft.com/en-us/library/ta31s3bc.aspx empfehlen Option 1 - myInteger.

Ich habe diesen Stil immer benutzt. Ich habe eine persönliche Abneigung gegen den _ Charakter.

44
btlog

Ich benutze Option 4 oben:

private int _myInteger;

Ich möchte in meinen Variablennamen einen Hinweis auf den Umfang haben, und der Unterstrich reicht für diesen Zweck aus. Es ist auch ziemlich leicht zu lesen.

25
Matt Dillard

Ich benutze das folgende Namensschema:

  • 1. (myInteger) für Variablen mit lokalem Gültigkeitsbereich
  • 2. (MyInteger) für öffentliche Immobilien
  • 4. (_myInteger) für private Variablen
16
Zafer

Ich denke, die Option 4 ist wirklich die am besten lesbare Option. Es hilft Ihnen dabei, dies nicht tun zu müssen:

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

Es macht auch alle privaten Mitglieder auffälliger. Wo zum Teufel kommt im folgenden Beispiel age her? Ohne das Qualifikationsmerkmal this ist es schwieriger zu sagen.

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

Das ist viel einfacher zu verstehen:

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

Zunächst einmal ist PascalCasing normalerweise für öffentliche Eigenschaften, Konstanten, Methoden usw. der Klasse reserviert. Also würde ich 2 und 5 überspringen.

Zweitens wird von der ungarischen Notation in der .NET-Welt abgeraten, daher ist (ähm, ich denke) 3 richtig. Angenommen, das ist es, was mit 3 los ist.

Das geht mit camelCasing und _camelCasing. Normalerweise verwende ich _camelCasing für Klassenvariablen und einfaches altes camelCasing für Variablen, die auf eine Methode oder eine engere Methode beschränkt sind. Kamelhülle ist der akzeptierte Standard für Methodenargumente, geschützte/private Variablennamen und Variablen innerhalb einer Methode oder eines engeren Bereichs.

Ich möchte auch den Unterstrich voranstellen, damit meine privaten Variablen in meinem Intellisense gruppiert werden. Ich mache dies jedoch nur für Variablen, die einem Typ zugeordnet sind. Innerhalb einer Methode oder eines engeren Bereichs deklarierte Variablen Ich lasse den Unterstrich weg. Erleichtert die Trennung und die Verwendung weniger verwendeter Variablen.

10
Ripped Off

private int integer

Wenn Sie in einem Methodenbereich zwischen Element- und lokalen Variablen verwechselt werden, müssen Sie wahrscheinlich eine Umgestaltung vornehmen.

4
Ryan Roberts

Ich mache Option 4, weil die SSCLI so aussieht, aber ehrlich gesagt ist mir die Benennung der privaten Variablen nicht so wichtig. Öffentlichkeit ist eine andere Geschichte.

Übrigens hast du m_MyInteger vergessen

2
Conrad Frix

Ich würde es nicht "mein" nennen!

Aber ich würde sagen

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

oft ist dies schöner als explizite Variablen. Wenn ich eine explizite private Variable hätte, würde ich sie int _variableName; Nennen.

2
CJBrew

Ich glaube, der beste Weg, dies zu tun (in C # /. Net sowieso), ist eine Kombination aus 2 und 6:

private int MyInteger { get; set; }

Theoretisch gibt es hier überhaupt keine Variable, aber sie sieht aus und verhält sich wie eine private Instanzvariable. Wenn wir diesem Wert eine Geschäftslogik hinzufügen müssen (es ist ein vollständig interner Wert, damit wir schließlich alles tun können, was wir wollen), dann ist er für uns bereits "Eigentum". Ein heißer, dampfender Pokal!

2
Task

mit dem Unterstrich.

Bill Wagner erklärt warum in Effective C # . Aber ich würde niemals eine ganze Zahl my Integer nennen, besser so etwas wie _age oder _length. Das Einfügen des Typnamens in den Instanznamen ist eine schreckliche Praxis. Namen sollten selbsterklärend sein und da C # typsicher ist, können Typen jederzeit herausgefunden werden.

1
Caspar Kleijne

In C++ verwende ich normalerweise _, da ich häufig zwischen den Editoren wechsle, sodass ich nicht sehen kann, ob es privat ist.

Für C # neige ich dazu, das _ wegzulassen, da Visual Studio es mir ermöglicht, zu sehen, ob es privat ist.

Ich neige dazu, den Camel Case-Weg zu verwenden, um dies zu tun.

1
Tamara Wijsman

Sie müssen ein genaueres Beispiel geben, aber:

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

Übrigens erhalten Sie all dies KOSTENLOS , wenn Sie den neuesten und besten MSFT Stylecop Installieren und verwenden.

1
Job

Ich benutze 4 (private int _myInteger;) weil:

private int myInteger;

So benenne ich meine lokalen Variablen.

private int MyInteger;

So benenne ich Konstanten.

private int mMyInteger;

Dies ist kein C # -Stil.

private int _MyInteger;

Das sieht seltsam aus.

1

Ich habe ReSharper-Namen für meine Variablen, nicht nur für meine, sondern auch für alle anderen. Es gibt eine große Menge an Konsistenz durch das Projekt.

0
Sevki

Ich gehe nach Option 5: private int _MyFoo

Ich sehe jedoch keinen wirklichen Wettbewerbsvorteil gegenüber _myFoo.

0
mafu

Juval Lowys IDesign C # Coding Standard ist sehr beliebt. Dieser Standard empfiehlt, privaten Mitgliedsvariablen "m_" voranzustellen (Option 6). Das machen wir in unserem Team.

private int m_myInteger;

Option 4 (_myInteger) ist eine akzeptable Variation dieses Standards.

Die MSDN-Empfehlung (myInteger) hat mir nicht gefallen, da es schwierig ist, ein privates Mitglied von einer lokalen Variablen zu unterscheiden. Ihre Empfehlung löst dieses Problem natürlich, indem sie private Mitglieder mit this qualifiziert, was mir überflüssig erscheint.

0
azheglov

Verwenden Sie camelCasing für private Variablen wie myInteger

Betrachten Sie ein vorhergehendes _ wenn die Variable eine Sicherung für eine Eigenschaft ist, um Verwirrungen zu reduzieren-
Variable _myProperty für Eigenschaft MyProperty

0
Gulshan