Wenn Sie Getter und Setter verwenden, wie sollten Sie die privaten Membervariablen nennen?
Frage
Als Art eines Follow-up href="https://stackoverflow.com/questions/111605/what-kind-of-prefix-do-you-use-for-member-variables"> diese Frage stimme ich schlecht mit den meisten Menschen auf dem Faden, der Präfixe sind. Aber was ist, wenn Sie Getter und Setter verwenden? Dann müssen Sie den öffentlich zugänglichen Getter Namen von der privat gespeicherten Variable differeniate. Ich normalerweise nur einen Unterstrich verwenden, aber gibt es einen besseren Weg?
Lösung
Dies ist eine völlig subjektive Frage. Es gibt keine „bessere“ Art und Weise.
Eine Möglichkeit ist:
private int _x;
public get x():int { return _x; }
public set x(int val):void { _x = val; }
Ein weiterer Grund ist:
private int x;
public get X():int { return x; }
public set X(int val):void { x = val; }
Auch ist die richtige Antwort. Jeder Stil hat Vor- und Nachteile. Wählen Sie die von Ihnen am besten gefällt, und wenden Sie es konsequent.
Andere Tipps
Ich mag prefixing Felder mit einem Unterstrich, wie andere schon erwähnt haben.
private int _x;
Ich denke, das jenseits gerade persönliche Präferenz geht aber (wie David Arno in diesem Thread gesagt). Ich denke, es gibt einige echte objektive Gründe, dies zu tun:
- Es bedeutet, dass Sie vermeiden, dass schreiben "this.x = x" für Aufgaben (vor allem in Setter und Konstrukteure).
- Sie unterscheidet Ihre Felder von Ihrem lokalen Variablen / Argumente. Es ist wichtig, dies zu tun: Felder heikler sind als Einheimische zu handhaben, da eine größere Tragweite / Lebensdauer länger ist. Hinzufügen in dem zusätzlichen Zeichen wird ein bisschen eine mentalen Warnzeichen für Programmierer.
- In einigen IDEs, führt dazu, dass der Unterstrich die automatische Vervollständigung, die Felder oben auf der Vorschlagsliste zu sortieren. Dies erleichtert es, alle Felder für die Klasse in einem Block zu sehen. Dies wiederum kann hilfreich sein; auf große Klassen können, sehen Sie in der Lage, um die Felder (in der Regel an der Spitze der Klasse definiert) auf dem gleichen Bildschirm wie der Code nicht, dass Sie gerade arbeiten. sie an die Spitze gibt eine praktische Referenz zu sortieren.
(Diese Konventionen sind für Java, aber ähnliche existieren für andere Sprachen)
Diese Dinge scheinen klein, aber ihre Verbreitung auf jeden Fall macht mein Leben einfacher, wenn ich Codierung.
In Java gibt es this.foo in Python gibt es self.foo und andere Sprachen haben ähnliche Dinge, so sehe ich nicht ein Bedürfnis nach etwas in besonderer Weise zu benennen, wenn ich bereits ein Sprachkonstrukt verwenden kann. Im gleichen Zusammenhang gute IDEs und Editoren verstehen Membervariablen und ihnen ein besonderes Highlight geben, so dass Sie es wirklich sehen w / o mit speziellen Namen.
In einem Fall sensible Sprache, die ich gerade verwenden:
private int myValue;
public int MyValue
{
get { return myValue; }
}
Ansonsten würde ich einen Unterstrich verwenden
Private _myValue As Integer
Public ReadOnly Property MyValue As Integer
Get
Return _myValue
End Get
End Property
Es gibt fast so viele verschiedene Möglichkeiten, dies zu tun, da es Programmierer dies zu tun, aber einige der beliebtesten Möglichkeiten, umfassen (für eine Eigenschaft Foo
):
- mFoo
- m_foo
- _foo
- foo
I wie writing "this.x = x". Es ist sehr klar für mich. Plus, wenn Eclipse, können Sie es automatisch Ihre Getter / Setter diese Art und Weise erzeugen.