Erstens, ich weiß, dass diese Frage schon mehrmals gestellt wurde und dass es am Ende meist eine Frage der persönlichen Vorliebe ist, aber alle Threads über das Thema zu lesen, sind einige Dinge nicht klar mich.Namenskonvention für private Felder
Im Grunde sind die meisten Leute zumindest der Meinung, dass das öffentliche Mitglied PascalCased sein sollte, während private Mitglieder niedrigereCamelCased sein sollten.
Die Frage, die normalerweise Debatte bringt, ist, ob die privaten Mitglieder durch einen Unterstrich oder irgendetwas anderes vorangestellt werden sollen oder nicht. Prefixing verletzt mehrere StyleCop-Regeln (die aber natürlich deaktiviert werden können)
Die Begründung, nicht Präfix ist, dass Sie dies verwenden sollten. stattdessen vorangestellt werden.
Das Problem, das ich habe, ist, dass ich nicht verstehe, wie es einen Unterschied macht? Ich meine, es ist nicht so, dass Sie dies nicht für ein öffentliches Mitglied in einer Klasse verwenden können.
Lassen Sie uns eine Klasse Kunden vorstellen, wie folgt aussehen:
class Customer
{
private int age;
public int Age
{
get { return this.age; }
set { this.age = value; }
}
}
(Offensichtlich in einem so einfachen Fall, ich eine autoproperty verwenden könnte, aber das ist nur ein Beispiel).
Wenn ich eine zweite Eigenschaft innerhalb dieser Klasse hinzufügte, würde mich nichts daran hindern, mit this.Age (die öffentliche Eigenschaft) und nicht mit this.age (dem privaten Feld) darauf zu verweisen. Manchmal könnte es sogar zulässig sein, wenn eine Überprüfung oder Formatierung auf der Getter-Ebene angewendet wurde.
Auch wenn einige andere Eigenschaften meiner Klasse benötigt, um das Alter des Kunden zu ändern, wäre es sinnvoll, die Eigenschaft und nicht das Backing-Feld direkt zu verwenden, da der Setter könnte auch einige Geschäftsregeln Validierungen implementieren, nicht wahr?
Mit anderen Worten, ich sehe wirklich nicht, wie das this-Schlüsselwort die Verwirrung zwischen privaten unterstützenden Mitgliedern und öffentlichen Eigenschaften vermeidet, da dies auf beiden verwendet werden kann und IntelliSense beide zeigt?
Danke.
Es wird definitiv nicht von Java kommt. In C/C++ - Bezeichnern, die mit Unterstrichen beginnen, ist normalerweise der Compiler reserviert. –