Großschreibungskonvention für C # geschützte Felder

17

Wie lauten die Großschreibungskonventionen für Schutzfeldnamen in C #?

Ist es _myVar (wie privates Feld) oder MyVar (wie Eigenschaften)?

Louis Rhys
quelle
3
Sind Sie sicher, dass Sie überhaupt geschützte Felder haben möchten? Die meisten Gründe, warum öffentliche Felder nicht vorhanden sind, gelten auch für geschützte. Daher ist es meines Erachtens besser, stattdessen geschützte Eigenschaften zu verwenden.
Svick
In Testfällen ist es normalerweise zweckmäßig, geschützte Felder zu haben. Vielleicht haben Sie aber Recht, wenn Sie die Eigenschaft ändern möchten. Aber wenn ich ein geschütztes Feld haben möchte, wie lautet die Namenskonvention?
Louis Rhys
2
Sind Sie sicher, dass _myVar die richtige Konvention für private Bereiche ist? (Sie gehen davon aus, dass dies der Fall ist) Versuchen Sie hier nicht, einen Religionskrieg zu beginnen, sondern nur zu sagen, dass Sie, wenn Sie sich für eine beliebige Regel für private Felder entschieden haben, eine andere Regel für Ihre geschützten Felder auswählen können. Der einzige Rat ist, konsequent zu sein.
Marek

Antworten:

13

Es gibt etwas, das als Entwurfsrichtlinien für die Entwicklung von Klassenbibliotheken bezeichnet wird und von Microsoft geschrieben wurde.

Es heißt:

Stellen Sie keine öffentlichen oder geschützten Instanzfelder bereit.

Öffentliche und geschützte Felder sind nicht gut versioniert und nicht durch Sicherheitsanforderungen für den Codezugriff geschützt. Verwenden Sie private Felder, anstatt öffentlich sichtbare Felder zu verwenden, und machen Sie sie über Eigenschaften verfügbar.

Ebenso gut wie:

  • Verwenden Sie in Feldnamen die Pascal-Schreibweise

  • Verwenden Sie kein Präfix für Feldnamen. Verwenden Sie beispielsweise nicht g_ oder s_, um statische von nicht statischen Feldern zu unterscheiden.

Das _Präfix wird genauso oft verwendet wie die this.Konvention (soweit ich Quellcode in CodePlex / GitHub gesehen habe). Beispielsweise fördert ReSharper _bei seinen Namensprüfungen.

jgauffin
quelle
Sie haben die Option "Verwenden Sie kein Präfix für Feldnamen" nicht mit einbezogen. von MSDN neben der Pascal-Groß- und Kleinschreibung :) Obwohl Resharper standardmäßig das _-Präfix verwendet, sollten Sie diese nicht mit Ihren eigenen Impressionen mischen, wenn Sie MSDN-Konventionen angeben.
Marek
2
was bedeutet es "nicht gut versionieren"? Wollen Sie damit sagen, dass es keine Richtlinie für den Namen des Schutzfelds gibt, da dies nicht empfohlen wird? Wie auch immer, Resharper scheint zu empfehlenMyVar
Louis Rhys
2
@ Marek: Ich habe meine eigene Präferenz aufgenommen. Ich habe einfach angegeben, was Resharper bevorzugt. Und es war nicht meine Absicht, selektiv zu sein. Antwort aktualisiert
jgauffin
1
@jgauffin Ändern Sie ein Feld nicht in eine Eigenschaft, die für Aufrufer transparent ist, abgesehen davon, dass die Verbraucher Ihren Code widerspiegeln? Wie wird die Kompatibilität beeinträchtigt, wenn ein geschütztes Feld in eine geschützte Eigenschaft mit demselben Namen geändert wird?
Quantic
1
Es bricht die Binärkompatibilität: msdn.microsoft.com/en-us/library/ta31s3bc(v=vs.71).aspx
jgauffin