45 Stimmen

Gibt es eine Standardmethode zur Organisation von Methoden innerhalb einer Klasse?

Es scheint viele verschiedene Möglichkeiten zu geben, Methoden in einer Klasse zu organisieren. Ich könnte Methoden nach Zugriff gruppieren und sie alphabetisch ordnen. Ich könnte verwandte Methoden zusammen gruppieren. Ich könnte eine Mischung aus beidem verwenden, oder etwas ganz anderes. Gibt es eine Standardmethode für diese Vorgehensweise? Wenn nicht, wie gehen Sie vor?

54voto

Joey Punkte 329386

StyleCop setzt hier einige Dinge durch:

Innerhalb einer Klasse, Struktur oder Schnittstelle müssen die Elemente in der folgenden Reihenfolge angeordnet werden:

  • Felder
  • Konstrukteure
  • Finalisten (Zerstörer)
  • Delegierte
  • Veranstaltungen
  • Enums
  • Schnittstellen
  • Eigenschaften
  • Indexer
  • Methoden
  • Strukturen
  • Klassen

Außerdem sind die Elemente nach dem Zugriff geordnet:

  • public
  • internal
  • protected internal
  • protected
  • private

Außerdem gibt es noch einige andere Regeln:

  • Kontingente müssen vor Feldern erscheinen
  • static Elemente müssen vor Instanz-Elementen erscheinen.

Dies könnte eine gute Ausgangsbasis für den Anfang sein. Was zusätzliche Ordnungsregeln angeht, so fasse ich verwandte Methoden in der Regel zusammen.

1 Stimmen

Das ist genau das, wonach ich gesucht habe. Ist #region Empfiehlt es sich, diese Bereiche voneinander zu trennen, oder wird dies als Überstrapazierung angesehen? #region ?

0 Stimmen

Interessant. Ich tue die Top 3, Elementordnung, und setzen Konstanten und statische Elemente zuerst aus Gewohnheit, aber nicht die anderen.

1 Stimmen

Ich habe früher viele #regions in meinem Code verwendet, für die Code-Folding-Funktion in VS. Aber unweigerlich würde ich am Ende entfernen sie, weil es einfach ein Schmerz, nicht in der Lage sein, schnell zu scannen meinen Code, wenn alles gefaltet ist. Schließlich habe ich es einfach aufgegeben. Ihre Erfahrungen können variieren.

7voto

TrueWill Punkte 24357

Was auch immer Sie tun, legen Sie es in Ihren Standards fest und seien Sie konsequent. Wir verwenden eine benutzerdefinierte Regionerate Konfiguration, um unsere Methoden anzuordnen. Alle Mitglieder des Teams verwenden dieselbe Konfiguration.

EDIT: Wir verwenden jetzt ReSharper 's Code-Bereinigung mit einem benutzerdefinierten Type Members Layout.

5voto

Stefan Egli Punkte 17178

Ich benutze NArrange die das meiste von dem macht, was ich will: Gruppieren Sie Felder, Methoden... alphabetisch und nach Zugriffsmodifikatoren. Es erzwingt auch einige Style-Cop-Regeln (z.B. die Reihenfolge der Elementtypen, die Position der using-Anweisungen). NArrange ist bis zu einem gewissen Grad konfigurierbar, Sie müssen also nicht mit der Standardkonfiguration leben, wenn Sie sie nicht mögen.

Aktualisierung: Jetzt verwende ich Resharper, da NArrange mit der neueren C#-Syntax nicht korrekt funktioniert.

2voto

Partha Choudhury Punkte 550
I group my methods by their access modifier 
and in the following sequence:

*   public 
*   internal 
*   protected internal
*   protected 
*   private

1voto

plinth Punkte 46829

Da Visual Studio über Tools verfügt, mit denen man schnell zu Methoden nach Namen navigieren kann, ziehe ich es vor, private Mitgliedsvariablen und Konstruktoren ganz oben zu platzieren und Methoden nach Funktionalität zu gruppieren (d. h. Hilfsmethoden liegen nahe bei den Methoden, die sie aufrufen). Ich gruppiere auch Eigenschaften zusammen. Wenn eine Klasse umfangreich wird, verwende ich #region-Direktiven, um die Organisation zu zeigen.

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