Wir Parameter nicht die gleiche wie unsere Felder nennen, weil es verwirrend ist. Code wird viel öfter gelesen als geschrieben, daher ist Lesbarkeit von größter Bedeutung. Mental zu entschlüsseln, welches uid
der Parameter ist, und welches das Feld ist, ist es einfach nicht wert.
Wir verwenden tatsächlich ein Unterstrichpräfix für unsere Felder, um sofort klar zu machen, was ein Feld ist und was ein Parameter/local ist. Ich weiß, dass nicht jeder diese Konvention mag, aber wir finden es hilfreich.
Darüber hinaus benennen wir für eine SetXxx-Methode, wie Sie gerade schreiben, oft nur den Parameter value
, der der Konvention der C# -Eigenschaften-Setter folgt. Da es nur den einen Parameter gibt und Sie bereits wissen, was es aus dem Methodennamen bedeutet, ist "Wert" genauso aussagekräftig wie "uid".
So in unserem Geschäft, würde Ihr Beispiel wahrscheinlich wie dies am Ende aussehen:
public class Terminal {
private int _uid;
public void SetUid(int value) {
_uid = value;
}
}
das ist vorausgesetzt, dass der uid schreibgeschützt ist. Wenn es read-write wäre, würden wir natürlich eine Eigenschaft anstelle von Getter/Setter-Methoden verwenden.
Es gibt einen Vorteil von Getter/Setter-Methoden im Vergleich zu Eigenschaften; Sie können als Stellvertreterreferenzen verwendet werden.Ja, Sie können die Eigenschaft in ein Lambda umwandeln, das wie ein Setter aussieht, aber das beginnt auch zu riechen, da Sie im Grunde eine Methode erstellen, die keinen Wert hinzufügt. – KeithS
@KeithS: Sie können einen Delegaten direkt zum Getter/Setter in reinem IL erstellen. In C# können Sie dies mithilfe von Reflection tun, was nicht zu schlecht ist, wenn Sie den Delegaten wiederverwenden: 'Func getter = (Func ) Delegate.CreateDelegate (typeof (Func ), someTerminalReference, typeof (Terminal) .GetProperty (" Uid "). GetGetMethod());' –
cdhowie
... Ich denke, ich hätte lieber das Lambda. All das, gegen() => Uid. Obwohl es dem Call-Stack eine zusätzliche Ebene hinzufügt, wäre es meiner Meinung nach leistungsfähiger und sicherlich einfacher zu lesen. – KeithS