Wir haben eine entsprechende Namens-Konventionen, wo ein this gar nicht nötig ist.
Properties - Groß geschrieben
Globale Felder - klein geschrieben mit voran gesetztem Unterstrich
Methoden - Groß geschrieben, bezeichnet eine Tätigkeit
Variablen im Methoden (auch Parameter) - klein geschrieben, ohne Unterstrich am Anfang
Allgemein Properties/Felder/Variablen sollten einen Namen haben, der den Inhalt als Objekt beschreibt.
Ist der Typ ein Delegat, dann schreibe ich dennoch eine Tätigkeit, wie bei den Methoden, allerdings nicht groß geschrieben. (Außer bei Properties, da setze ich dann sowas wie "Func" ans Ende)
Events enden immer mit "Event" und sind groß geschrieben, dazu eine passende OnEvent-Methode.
So können wir dann immer anhand des Namens erkennen, was das für eine Variable ist, wo sie liegt und - wenn die Benennung gut ist - wofür sie da ist.
Ein this ist dann gar nicht mehr nötig, da die Parameter immer klein geschrieben sind, während alles Andere entweder groß geschrieben oder mit Unterstrich da steht.
Einzige Stelle, wo man es braucht, ist die Konstruktor-Überladung, wo dann eventuell ein anderer Konstruktor aufgerufen wird.
Manchmal kommt auch so die Argumentation auf: Wenn ich das this für einen Aufruf benötige, habe ich irgendetwas falsch benannt. ^^
PS:
Ein Beispiel, was in meinen Augen sauberer Code ist:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| public class Person { private readonly string _name; private readonly DateTime _birthday;
public string Name { get { return _name; } } public DateTime Birthday { get { return _birthday; } }
public Person(string name, DateTime birthday) { if (string.IsNullOrEmpty(name)) throw new ArgumentNullException("name"); if (CalculateAge(birthday) < 0) throw new ArgumentException("Your birthday must be in the past.", "birthday");
_name = name; _birthday = birthday; }
public int CalculateAge() { return CalculateAge(Birthday); }
private int CalculateAge(DateTime birthday) { var years = DateTime.Now.Year - birthday.Year; birthday = birthday.AddYears(years);
if (DateTime.Now.CompareTo(birthday) < 0) years--;
return years; } } |