811 Stimmen

Reihenfolge der Elemente in den Klassen: Felder, Eigenschaften, Konstrukteure, Methoden

Gibt es eine offizielle C#-Richtlinie für die Reihenfolge der Elemente in Bezug auf die Klassenstruktur?

Funktioniert es:

  • Öffentliche Felder
  • Private Felder
  • Eigenschaften
  • Konstrukteure
  • Methoden
    ?

Ich bin neugierig, ob es eine feste Regel für die Reihenfolge der Artikel gibt? Ich bin ein bisschen durcheinander. Ich möchte mich an einen bestimmten Standard halten, damit ich es überall machen kann.

Das eigentliche Problem ist, dass meine komplexeren Eigenschaften am Ende sehr wie Methoden aussehen und sich am Anfang vor dem Konstruktor fehl am Platz fühlen.

Irgendwelche Tipps/Vorschläge?

12voto

Aluan Haddad Punkte 25726

Ich bevorzuge es, nach Art zu ordnen und dann die Sichtbarkeit wie folgt zu verringern

public methods
public events
public properties

protected methods
protected events
protected properties

private methods
private events
private properties
private fields

public delegates
public interfaces
public classes
public structs

protected delegates
protected interfaces
protected classes
protected structs

private delegates
private interfaces
private classes
private structs

Ich weiß, dass dies gegen Style Cop verstößt, und wenn mir jemand einen guten Grund nennen kann, warum ich die Implementierungsdetails eines Typs vor seine Schnittstelle stellen sollte, bin ich bereit, dies zu ändern. Gegenwärtig habe ich eine starke Präferenz dafür, private Mitglieder an letzter Stelle zu setzen.

Hinweis: Ich verwende keine öffentlichen oder geschützten Felder.

7voto

Mitchel Sellers Punkte 60318

Wie bereits erwähnt, gibt es in der Sprache C# nichts, was das Layout vorschreibt. Ich persönlich verwende Regionen, und ich mache so etwas für eine durchschnittliche Klasse.

public class myClass
{
#region Private Members

#endregion
#region Public Properties

#endregion

#region Constructors

#endregion
#region Public Methods

#endregion
}

Für mich macht es jedenfalls Sinn

7voto

Michael Damatov Punkte 14513

Normalerweise versuche ich, dem nächsten Muster zu folgen:

  • statische Mitglieder (haben in der Regel einen anderen Kontext, müssen thread-safe sein, etc.)
  • Instanzmitglieder

Jeder Teil (statisch und Instanz) besteht aus den folgenden Mitgliedstypen:

  • Operatoren (sind immer statisch)
  • Felder (initialisiert vor den Konstruktoren)
  • Konstrukteure
  • Destruktor ( ist es Tradition, den Konstrukteuren zu folgen )
  • Eigenschaften
  • Methoden
  • Veranstaltungen

Dann werden die Mitglieder nach Sichtbarkeit sortiert (von weniger bis mehr sichtbar):

  • privat
  • intern
  • intern geschützt
  • geschützt
  • öffentlich

Die Reihenfolge ist kein Dogma: einfache Klassen sind einfacher zu lesen, komplexere Klassen müssen jedoch kontextspezifisch gruppiert werden.

5voto

blowdart Punkte 53842

Von StyleCop

private Felder, öffentliche Felder, Konstruktoren, Eigenschaften, öffentliche Methoden, private Methoden

Da StyleCop Teil des MS-Erstellungsprozesses ist, könnte man dies als De-facto-Standard betrachten.

3voto

Rory Becker Punkte 15461

Am ehesten finden Sie noch "Design Guidelines, Managed Code and the .NET Framework" ( http://blogs.msdn.com/brada/articles/361363.aspx ) von Brad Abrams

Viele Normen sind hier aufgeführt. Der relevante Abschnitt ist 2.8, glaube ich.

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