9 Stimmen

Was ist eine gute Benennungskonvention, um einen Klassennamen von einer Eigenschaft in C# zu unterscheiden?

Das passiert mir häufig genug, so dass ich sehen wollte, was andere dazu zu sagen haben.

Wenn ich die StyleCop-Konventionen verwende, stelle ich fest, dass ich oft einen Eigenschaftsnamen habe, der sich nur schwer von dem Klassennamen unterscheiden lässt, auf den er zugreift. Zum Beispiel:

public class ProjectManager
{
 // Stuff here
}

public class OtherClass
{
     private ProjectManager ProjectManager { get; set; }
}

Es kompiliert und läuft, aber es scheint ein einfacher Weg zu sein, um Dinge zu verwirren, auch mit der Verwendung von "this".

11voto

JaredPar Punkte 699699

Dies ist eigentlich ein sehr häufiges Muster in der .Net-Programmierung. Besonders bei Enum-Typen und -Mitgliedern, da dies die in den .Net Design Guidelines empfohlene Art der Programmierung ist.

4.0 Verweis auf die Gestaltungsrichtlinien

Es mag zwar ein wenig verwirrend sein, aber das ist es nicht mehr, wenn man es ein paar Mal gesehen hat. Die Tools unterstützen dieses Muster gut und da das eine ein Typ und das andere eine Instanz ist, ist es schwer, sie versehentlich zu vertauschen, ohne einen Kompilierungsfehler zu verursachen.

4voto

John Saunders Punkte 159011

Dies ist eine typische Namenskonvention, wenn es nur eine einzige Eigenschaft vom Typ ProjectManager innerhalb einer bestimmten Klasse. Es ist nicht mehr verwirrend, weil es keine anderen Verwendungen des Begriffs ProjectManager Typ.

Wenn es andere Verwendungszwecke gibt, braucht man natürlich andere Namen.

1voto

drharris Punkte 11096

Ich stimme den anderen Antworten zu. Der Vollständigkeit halber finde ich manchmal einen Weg, den Klassennamen ein wenig mehr zu verallgemeinern. Ich verstehe, dass Ihr Beispiel nur ein Beispiel war, aber ein Weg, es zu tun, wäre sein:

public class Person
{
  // Stuff here
}

public class OtherClass
{
  private Person ProjectManager { get; set; }
}

Dadurch wird der Text etwas lesbarer. Es ist aber durchaus akzeptabel (und sogar erwünscht), dass Klassenname und Eigenschaft identisch sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X