3 Stimmen

Welche Reihenfolge der Elemente im Programmcode bevorzugen Sie? Warum?

Am Anfang einer .java- oder .cs-Datei steht natürlich die Package/Namespace-Deklaration, gefolgt von der Import-/Verwendungsanweisung.

Aber was mich wütend macht, ist die Frage, wo ich die Variablendeklaration einfügen soll. Am Anfang oder am Ende?

Das ist mir lieber;

package/namespace declaration
import/using declaration of microsoft's/java namespaces
import/using declaration of standard 3rd party namespaces
import/using declaration of my personal namespaces

constructors
private methods, each preceded by any private variable that was first used.
protected methods, each preceded by any private variable that was first used.
public methods, each preceded by any private variable that was first used.

inner/nested classes and enums

private anon classes assignment
protected variables/anon classes assignment
public variables/assigned anon classes assignment

Aber ich weiß, dass viele Leute gerne alle Variablen ganz oben nach den Paket-/Namensraum- und Import-/Verwendungsdeklarationen einfügen. Das ist problematisch, weil manchmal die Anzahl der Variablen und der zugewiesenen Klassen zu groß wird und das die Sichtbarkeit der Konstruktoren verdeckt - die ersten Zeilen, die sichtbar sein müssen, sind die Konstruktoren, weil sie mir die Signatur der Instanziierung mitteilen.

Und für die anon-Klassen, die unmittelbar einer Variablen zugeordnet sind, betrachte ich sie als Teil der "Struktur der Variablen", also gruppiere ich sie zu Variablen.

Ich systematisiere die Platzierung meiner Code-Elemente, damit ich sie leicht auffinden kann.

1voto

Matt Greer Punkte 58978

Der Java-Standard besagt, dass Sie Ihre Deklarationen von privat nach öffentlich anordnen sollen. Ich finde, das hilft mir wirklich sehr. Ich bin mir nicht sicher, warum, aber das Lesen von Code von unten nach oben funktioniert bei mir sehr gut. Also habe ich das auf C# (meine Hauptsprache) übertragen, wo ich eine Klasse wie folgt anordne

using statements
namespace
private static fields
private static methods/properties
public static methods/properties
private fields
private methods/properties
protected methods/properties
public methods/properties

Ich gebe Konstruktoren keinen eigenen Abschnitt, wie es die meisten Leute tun, außer dass sie der erste Eintrag ihrer Kategorie sind (so kommen öffentliche Konstruktoren direkt nach geschützten Methoden, zum Beispiel). Ich verwende fast nie Dinge mit internem Gültigkeitsbereich, außer für ganze Klassen.

Ich verwende nie Regionen und ich verwende nie öffentliche Felder (immer Eigenschaften)

1voto

drharris Punkte 11096

Ich neige dazu, Dinge in der gleichen Reihenfolge zu bestellen, in der ich sie verwenden würde. Namespace, gefolgt von using Deklarationen, gefolgt von Konstruktoren, dann verschachtelte Klassen, dann Parameter, öffentliche Methoden und schließlich private Methoden. Im Grunde ist es eine lesbare Reihenfolge, die jemand, der meinen Code nicht kennt, lesen sollte, um eine erste Vorstellung davon zu bekommen, was die Klasse tut. Es ist auch in der Reihenfolge, wie sie verwendet werden; zuerst muss man den Namespace kennen, dann wie man konstruiert, dann wie man konfiguriert und dann wie man verwendet.

Hinzu kommt, dass private Mitgliedsvariablen immer neben dem Ort stehen, an dem sie verwendet werden. Wenn ich eine private Hilfsmethode habe, versuche ich, sie neben die entsprechende öffentliche Methode zu stellen und sie in einem #region . Aber in der Regel würden alle privaten Mitglieder ganz unten stehen, weil ich denke, dass jemand, der die Klasse benutzt, sie weniger oft lesen muss als die öffentlichen Mitglieder.

Ich denke, es hängt auch davon ab, ob Sie einen Code schreiben, den andere lesen, oder ob Sie einen Code schreiben, den nur Sie pflegen. Im letzteren Fall neige ich dazu, die "schwierigeren" Dinge weiter oben anzusiedeln, weil ich weiß, dass das die Dinge sind, in denen ich wahrscheinlich Fehler beheben werde.

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