Was ist die bewährte Methode, die am häufigsten akzeptierten Namenskonventionen für private Variablen in C #?
private int myInteger;
private int MyInteger;
private int mMyInteger;
private int _myInteger;
private int _MyInteger;
- Mysteriöse andere Option
Welches verwenden Sie und warum? (Mein Unternehmen ist ziemlich neu in C # und ich möchte die branchenweit am meisten akzeptierte Methode auswählen, um in unseren Codierungsstandard einzusteigen.)
coding-standards
variables
naming
Vaccano
quelle
quelle
Antworten:
In den Entwurfsrichtlinien für MSDN-Klassen http://msdn.microsoft.com/en-us/library/ta31s3bc.aspx wird Option 1 - myInteger empfohlen.
Ich habe diesen Stil immer benutzt. Ich habe eine persönliche Abneigung gegen den _-Charakter.
quelle
myInteger
und es wird weiter passen_myInteger
. Aber ich wusste nicht, dass das Sicherheitsdatenblatt sagt, dass der _myInteger
eine Variable lokal für eine Methode oder ein privates Klassenmitglied ist , wenn Sie Option 1 verwenden ?this.myInteger
;)this
jedes Mal eingeben, sondern nur die Methoden, bei denen eine lokale Variable mit demselben Namen vorhanden ist. Sie müssen jedoch jedes Mal ein zusätzliches Symbol schreiben, wenn Sie einen Unterstrich verwenden. Ich bin damit einverstanden, dass es immer wichtig ist, sich an Ihre lokale Code-Vereinbarung zu halten.Ich benutze Option 4 oben:
Ich möchte einen Hinweis auf den Gültigkeitsbereich in meinen Variablennamen haben, und der Unterstrich reicht für diesen Zweck aus. Es ist auch ziemlich einfach zu lesen.
quelle
Ich benutze das folgende Namensschema:
quelle
Ich denke, die Option 4 ist wirklich die am besten lesbare Option. Es hilft Ihnen dabei, dies zu tun:
Es macht auch alle privaten Mitglieder auffälliger. Woher kommt der Teufel im folgenden Beispiel
age
? Ohne diethis
Qualifikation ist es schwerer zu sagen.Das ist viel einfacher zu verstehen:
quelle
PascalCasing ist in der Regel 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, sodass (ähm, ich denke) 3 richtig ist. Angenommen, das ist was mit 3 los ist.
Das geht mit camelCasing und _camelCasing. Normalerweise verwende ich _camelCasing für Klassenvariablen und normales altes camelCasing für Variablen, die auf eine Methode oder eine engere Ebene beschränkt sind. Camel-Gehäuse ist der akzeptierte Standard für Methodenargumente, geschützte / private Variablennamen und Variablen innerhalb einer Methode oder eines engeren Bereichs.
Ich stelle auch gerne den Unterstrich voran, damit meine privaten Variablen in meinem Intellisense gruppiert sind. Ich mache dies jedoch nur für Variablen, die einem Typ zugeordnet sind. Variablen, die innerhalb einer Methode oder eines engeren Bereichs deklariert wurden, lassen den Unterstrich weg. Vereinfacht die Trennung und das Zusammenhalten weniger verwendeter Variablen.
quelle
I don't understand why you would use _camelCasing for class variables
Sie nach:I'm talking about the difference between Color.ClassMethod() and myColor.InstanceMethod()
Entschuldigen Sie, während ich verwirrt bin. Hören Sie, ich verwende Klassenvariablen nur selten, daher ist es schön, durch Drücken von _ an ihre Namen erinnert zu werden und sie alle in der Intellisense-Anzeige schön und gruppiert erscheinen zu lassen.private int integer
Wenn Sie in einem Methodenbereich zwischen Member- und lokalen Variablen verwechseln, müssen Sie wahrscheinlich eine Umgestaltung vornehmen.
quelle
integer
könnte vielleicht besser umformuliert werdenvalue
?Ich glaube, der beste Weg, dies zu tun (in C # / .net), ist eine Kombination aus 2 und 6:
Hier gibt es theoretisch ü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 alles tun können, was wir wollen), dann ist er bereits für uns "eigensinnig". Ein heißer, dampfender Pokal des Gewinns!
quelle
Ich mache Option 4, weil die SSCLI so aussieht, aber ehrlich gesagt ist mir die Benennung von privaten Variablen egal. Öffentlichkeit ist eine andere Geschichte.
Übrigens hast du m_MyInteger vergessen
quelle
Ich würde es nicht "mein" nennen!
Aber ich würde sagen
Das ist oftmals besser als explizite Variablen. Wenn ich eine explizite private Variable hätte, würde ich es aufrufen
int _variableName;
quelle
In C ++ verwende ich _ häufig, wenn ich den Editor wechsle, wodurch ich nicht erkennen kann, ob es privat ist.
Bei C # neige ich dazu, _ wegzulassen, da Visual Studio es mir ermöglicht, zu prüfen, ob es privat ist.
Ich neige dazu, die Camel Case-Methode zu verwenden, um dies zu tun.
quelle
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 komisch aus.
quelle
mit dem Unterstrich.
Bill Wagner erklärt, warum in Effective C # . Aber ich würde nie eine ganze Zahl nennen meine Integer , besser etwas wie _age oder _length. Das Einfügen des TypeName in den Instanznamen ist eine schreckliche Praxis. Namen sollten selbsterklärend sein und da C # typensicher ist, können Typen jederzeit ermittelt werden.
quelle
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 die neueste und beste Version installieren und verwenden
MSFT Stylecop
.quelle
Ich gehe nach Option 5:
private int _MyFoo
Ich sehe allerdings keinen wirklichen Wettbewerbsvorteil gegenüber _myFoo.
quelle
Verwenden Sie camelCasing für private Variablen wie
myInteger
Berücksichtigen Sie ein vorangestelltes Argument,
_
wenn die Variable eine Sicherung für eine Eigenschaft ist, um Verwirrungen zuvermeiden. Variable
_myProperty
für EigenschaftMyProperty
quelle
Ich habe ReSharper meine Variablen genannt, nicht nur meine, sondern auch alle anderen. Während des Projekts herrscht ein hohes Maß an Konsistenz.
quelle
Der IDesign C # -Codierungsstandard von Juval Lowy ist sehr beliebt. Diese Norm empfiehlt, privaten Mitgliedsvariablen das Präfix "m_" (Option 6) voranzustellen. Das machen wir in unserem Team.
Option 4 (
_myInteger
) ist eine akzeptable Abwandlung dieser Norm.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 natürlich dieses Problem, indem sie private Mitglieder mit qualifiziertthis
, was mir überflüssig erscheint.quelle