6 Stimmen

Klassenmitgliedsorganisation

Was ist der beste Weg, um Klassenmitglieder zu sortieren?

Ich bin im Konflikt mit einem Teammitglied darüber. Er schlägt vor, dass wir die Mitglieder alphabetisch sortieren sollten. Ich denke, es ist besser, sie auf eine semantische Weise zu organisieren: wichtige Attribute zuerst, zusammenhängende Methoden dazwischen usw.

Was denkst du?

0voto

Kenji Baheux Punkte 576

Schreibst du ein Telefonbuch?

Mit einem semantischen Ansatz kannst du leicht zeigen, welche die wichtigsten Methoden sind. Ich gehe in der Regel zuerst mit Konstruktor, Destruktor, dann wichtige Methoden gefolgt von Gettern und Settern und schließlich anderen Methoden vor. Schließlich wende ich einen ähnlichen Ansatz für interne Teile an (private Methoden, Attribute...).

Die alphabetische Reihenfolge vermittelt keine nützlichen Informationen über deine Klasse. Wenn du wirklich Methoden alphabetisch sortiert sehen möchtest, solltest du dich auf eine Funktion deines IDE verlassen.

0voto

rlerallut Punkte 7067

Sie können von semantisch zu alphabetisch wechseln, indem Sie die "Methodenanzeige" in Ihrer IDE sortieren.

Sie können nicht (automatisch) von alphabetisch zu semantisch wechseln.

Daher: semantisch.

0voto

user25306 Punkte 411

Angenommen, Sie verwenden eine moderne IDE, die Methode, die Sie suchen, ist selten mehr als zwei Mausklicks entfernt, daher bin ich mir nicht sicher, was es Ihnen bringen würde, Ihre Methoden auf eine bestimmte Weise zu organisieren. Ich benutze Stylecop (http://code.msdn.microsoft.com/sourceanalysis), das mich dazu bringt, nach öffentlich/privat/Methode/Eigenschaften zu ordnen - ich habe festgestellt, dass das ausreichend ist.

Die einzige Zeit, zu der ich wirklich dachte, dass dies wichtig sei, war, als ich ein sehr großes JScript-Programm schrieb und der Editor zu dieser Zeit keine Hilfe beim Auffinden von Funktionen bot. Die alphabetische Organisation war sehr hilfreich. Wenn sie alphabetisch sortiert sind, ist es nicht schwer zu erkennen, in welche Richtung Sie im Dokument gehen müssen, um eine Methode zu finden. Eine semantische Organisation wäre völlig unbrauchbar gewesen.

0voto

RWendi Punkte 1416

Auf einer höheren Ebene würde ich meinen Kurs wie folgt organisieren:

  1. Konstruktor
  2. Destruktor
  3. Private Felder
  4. Eigenschaften
  5. Methoden/Funktionen

Dann würde ich für Methoden/Funktionen wieder nach Funktionalität unterteilen. z.B. würde ich Methoden, die ein Interface implementieren, in einen Bereich setzen, Event-Handler-Methoden in einen anderen Bereich usw...

RWendi

0voto

Mike Hofer Punkte 15553

Ich denke, ich gehöre zu den Sonderfällen, die alphabetische Auflistungen bevorzugen.

Zunächst einmal habe ich festgestellt, dass das Gruppieren von Methoden "semantisch" dazu neigt, eine Zeitverschwendung zu sein. Wenn wir jedoch über das Gruppieren nach Bereich/Sichtbarkeit sprechen, ist das etwas anderes. Aber wenn sich der Bereich des Elements ändert, müssen Sie Zeit darauf verwenden, das Element zu verschieben, um den Code aktuell zu halten. Ich möchte keine Zeit damit verschwenden, Code herumzuschieben, um eine solche Richtlinie zu befolgen.

Ich bin auch kein großer Fan von Regions. Wenn Eigenschaften und Methoden nach Bereich gruppiert sind, schreien sie förmlich nach einer Einschließung in einer Region. Aber das Einschließen von Code in zusammenklappbare Regionen neigt dazu, schlecht geschriebenen Code zu verbergen. Solange Sie es nicht sehen müssen, werden Sie nicht die Notwendigkeit verspüren, darüber nachzudenken, ihn zu überarbeiten, um ihn wartbar zu machen.

Also bevorzuge ich die alphabetische Organisation. Sie ist einfach, direkt und auf den Punkt gebracht. Ich werde nicht in Versuchung geführt, Gruppen in Regionen zu einschließen. Und da die IDE es sowieso leicht macht, zu einer Funktions- oder Eigenschaftsdefinition zu springen, ist das physische Layout des Codes unwichtig. Früher wollte man, dass sich die Leute zuerst auf Ihre öffentlichen Elemente konzentrieren. Moderne IDEs machen das größtenteils zu einem bedeutungslosen Argument zugunsten von layouts basierend auf dem Bereich.

Aber der größte Vorteil von alphabetischen Layouts ist folgender: gedruckte Codebeispiele während Codeüberprüfungen. Und ich nutze sie häufig. Es erleichtert das Auffinden einer Funktion oder einer Eigenschaft. Wenn Sie schon einmal durch eine Menge Code gewühlt haben, um eine Funktion oder eine Eigenschaft zu finden, wenn die Dinge nicht einfach alphabetisch aufgelistet waren, wissen Sie, wovon ich spreche.

Aber wie sie sagen, das sind meine subjektiven Ansichten zu dem Thema. Ihre Erfahrungen können anders sein.

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